抽取JDBC工具類:JDBCUtils
阿新 • • 發佈:2020-10-27
目的:簡化書寫
分析:
驅動註冊,連線物件建立,其中包括輸入驅動,資料庫的地址,以及使用者名稱和密碼,每次編寫程式碼都需要重複編寫,如果每次使用的都是同一個賬戶的同一個資料庫,程式碼的重複讀很高,甚至如果sql語句相同,或者都是查詢語句時,會建立的statement物件,而物件的銷燬程式也是一模一樣。面對這樣高度重複的程式碼,我們需要對其進行封裝。像資料庫資訊這種可能會變更的資訊,我們可以寫一個數據庫的配置檔案,當用戶的資料庫資訊不變時,直接使用其中的資訊即可,如果有變更,直接更改配置檔案,再進行資料讀寫。
實現:
package demo02.homework; importjava.io.FileReader; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLDecoder; import java.sql.*; import java.util.Properties; public class JdbcUtils { private static String url = null; private static String user = null;private static String password = null; private static String driver = null; // 使用靜態方法,保持全域性呼叫 static { // 獲取包所在資料夾的資料庫配置檔案 ClassLoader classLoader = JdbcUtils.class.getClassLoader(); // getResource內的資料庫配置檔案路徑最好寫絕對路徑 URL resource = classLoader.getResource("demo02/homework/jdbc.properties"); String path= resource.getPath(); try { // 如果資料庫配置檔案路徑有中文,會顯示亂碼,需要進行解碼 path = URLDecoder.decode(path, "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } // 建立獲取配置資訊物件 Properties prop = new Properties(); try { // 載入資料庫配置檔案 prop.load(new FileReader(path)); } catch (IOException e) { e.printStackTrace(); } // 獲取資料庫配置檔案對應的資訊 url = prop.getProperty("url"); user = prop.getProperty("user"); password = prop.getProperty("password"); driver = prop.getProperty("driver"); try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 建立連線物件 public static Connection getConnection() { try { return DriverManager.getConnection(url, user, password); } catch (SQLException e) { e.printStackTrace(); return null; } } // 關閉物件方法,這裡進行了過載,接收不同的物件 public static void close(Connection conn, Statement stat){ if(stat!=null){ try { stat.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(Connection conn, Statement stat, ResultSet rs){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(stat!=null){ try { stat.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }