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(); } }
