如何使用單例模式返回一個安全的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();
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM