Java的數據庫連接工具類的編寫
步驟:
1. 定義變量
2. 通過反射進行讀取配置文件
3. 實例化Properties讀取配置文件中的各個屬性
4. 關閉字節輸入流
5. 類加載
6. 通過驅動管理的獲取連接方法獲取到連接對象
7. 釋放資源
代碼:
package cn.javabs.util; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /** * @author: Mryang * Jdbc工具類: 工具類的含義是作為一個通用的輔助資料使用,簡化開發流程,提高效率。 * 工具類一般使用“static”進行修飾,靜態化 * static的優點 * |---- 1. 可以使用 【類名.函數名稱】進行調用,不必再次創建對象 * |---- 2. 優於構造函數先執行 * |---- 4. 靜態成員被所有對象所共享(靜態數據達到成為共享數據) * |---- 3. 隨着類的加載而加載 (也就是說類運行了,靜態成員也就跟隨運行了) * static的缺點 * |---- 1. 訪問出現局限性,只能訪問靜態 * |---- 2. 靜態成員的生命周期過長 * |---- 3. 不可以與this\super關鍵字同用 * |----因為this代表是當前類對象,而靜態存在時,有可能沒有對象 * |----因為super代表是父類對象,而靜態存在時,有可能沒有對象, * |----而且靜態優先於對象存在 * |----4.靜態方法只能訪問靜態成員, 非靜態方法既可以訪問靜態又可以訪問非靜態; * * **/ public class JdbcUtil { // 定義 數據庫驅動 private static String driverClass; // 定義 數據庫的連接 private static String url; // 定義 數據庫用戶 private static String user; // 定義 數據庫用戶的密碼 private static String password; // 靜態代碼塊 static{ try { // JdbcUtil.class是獲得當前對象所屬的class對象 // getClassLoader()是取得該Class對象的類裝載器 // getResourceAsStream(“dbcfg.properties”) 調用類加載器的方法加載資源,返回是字節輸入流 InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("dbcfg.properties"); // 實例化Properties對象,目的是為了創建props Properties props = new Properties(); // 在props對象中可以進行加載屬性列表到Properties類對象 props.load(in);//也就是說: 通過props對象進行加載輸入流對象(in) /* * 通過getProperty方法用指定的鍵在此屬性列表中搜索屬性 */ //也就是說: 通過props對象進行獲取【dbcfg.properties】中的指定的鍵-driverClass(被指定) driverClass = props.getProperty("driverClass"); //也就是說: 通過props對象進行獲取【dbcfg.properties】中的指定的鍵-url(被指定) url = props.getProperty("url"); //也就是說: 通過props對象進行獲取【dbcfg.properties】中的指定的鍵-user(被指定) user = props.getProperty("user"); //也就是說: 通過props對象進行獲取【dbcfg.properties】中的指定的鍵-password(被指定) password = props.getProperty("password"); //已經獲取過配置文件中的屬性鍵值對,將字節輸入流進行釋放關閉 in.close(); } catch (IOException e) { // 轉換異常拋出 throw new ExceptionInInitializerError("獲取數據庫配置文件信息失敗"); } try { // 類加載-->驅動 Class.forName(driverClass); } catch (ClassNotFoundException e) { // 轉換異常拋出 throw new ExceptionInInitializerError("加載驅動失敗"); } } /** * 獲取連接 * @return: conn */ public static Connection getConnection(){ try { //連接類型 連接對象 = 驅動管理中的獲取連接(連接,用戶名,密碼) Connection conn = DriverManager.getConnection(url,user,password); // 將連接進行返回 return conn; } catch (Exception e) { // 轉換異常拋出 throw new RuntimeException("鏈接數據庫的url或用戶名密碼錯誤,請檢查您的配置文件"); } } /** * 釋放資源 * 傳遞三個參數: 結果集對象 ,處理Sql語句對象 , 連接對象 * 無返回值狀態 */ public static void release(ResultSet rs,Statement stmt,Connection conn){ //如果 結果集中不為空 if(rs!=null){ try { rs.close();//將結果集中關閉 } catch (SQLException e) { e.printStackTrace(); } rs = null; } //如果處理Sql語句對象不為空 if(stmt!=null){ try { stmt.close();//將處理Sql語句對象關閉 } catch (SQLException e) { e.printStackTrace(); } stmt = null; } //如果 連接不為空 if(conn!=null){ try { conn.close();//將連接關閉 } catch (SQLException e) { e.printStackTrace(); } conn = null; } } }
配置文件編寫 - dbcfg.properties:
#driver config for mysql
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
user=root
password=sorry
作者: 楊校
出處:https://www.cnblogs.com/xiaoxiao5016/
分享是快樂的,也見證了個人成長歷程,文章大多都是工作經驗總結以及平時學習積累,基於自身認知不足之處在所難免,也請大家指正,共同進步。
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出, 如有問題, 可郵件(397583050@qq.com)咨詢。
