zoukankan      html  css  js  c++  java
  • 如何使用单例模式返回一个安全的Connection

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class ConnectDemo {
        public enum MyEnumSingleton {
    
            connectionFactory;
            private Connection conn;
    
            private MyEnumSingleton() {
                try {
                    String url = "jdbc:mysql://localhost:3306/mydb";
                    String name = "root";
                    String password = "";
                    String Driver = "com.mysql.jdbc.Driver";
    
                    Class.forName(Driver);
    
                    conn = DriverManager.getConnection(url, name, password);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
    
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    
            public Connection getConn() {
                return conn;
            }
    
        }
    
        public static Connection getConn() {
            return MyEnumSingleton.connectionFactory.getConn();
        }
    
    }

    使用枚举类时,构造方法会被自动调用。

    再修改一下,降低一下耦合度,将建立连接的四大参数改成在配置文件中获取

    首先在项目目录下建立一个配置文件

    把参数添加进去

    变成从配置文件中读取参数,这样修改的话只用修改配置文件就可以了

    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Properties;
    
    public class ConnectDemo {
        public enum MyEnumSingleton {
    
            connectionFactory;
            private Connection conn;
    
            private MyEnumSingleton() {
                try {
                    InputStream in=Connection.class.getClassLoader()
                            .getResourceAsStream("dbconfig.properties");
                    Properties pro=new Properties();
                    pro.load(in);
                    String url = pro.getProperty("url");
                    String name = pro.getProperty("name");
                    String password =pro.getProperty("password");
                    String Driver = pro.getProperty("DriverClassName");
    
                    Class.forName(Driver);
    
                    conn = DriverManager.getConnection(url, name, password);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
    
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
    
            public Connection getConn() {
                return conn;
            }
    
        }
    
        public static Connection getConn() {
            return MyEnumSingleton.connectionFactory.getConn();
        }
    
    }
  • 相关阅读:
    VC编程锦集-1
    VC窗口关闭调用顺序
    Windows消息WM_USER、WM_APP的区别
    Toolbar添加控件;创建多行toolbar;重新排列toolbar
    SQL模糊查询详解
    MySql格式化日期
    Apache PHP 服务环境配置
    kvm.install
    repo搭建
    apache故障处理
  • 原文地址:https://www.cnblogs.com/wxw7blog/p/7860358.html
Copyright © 2011-2022 走看看