爲何要自定義數據庫鏈接的工具類: java
在開發中,咱們在對數據庫進行操做時,必需要先獲取數據庫的鏈接,在上一篇隨筆中提到的獲取數據庫鏈接的步驟爲:mysql
一、定義好4個參數並賦值sql
二、加載驅動類數據庫
三、獲取數據庫鏈接工具
具體代碼以下:url
1 String username="root"; //鏈接數據庫的用戶名 2 String password="root"; //鏈接數據庫的密碼 3 //鏈接MySql數據庫的url,不一樣數據庫url不一樣,語法:jdbc:子協議:廠商內容 4 String url="jdbc:mysql://localhost:3306/MyBookStore"; 5 //數據庫驅動程序的全類名,加載相應數據庫的jar包,在Web App Libraries中找到driver.class複製其全類名便可 6 String driver="com.mysql.jdbc.Driver"; 7 //2.加載驅動類 8 Class.forName(driver); 9 //3.獲取數據庫鏈接,對數據庫的一切操做都是從Connection鏈接開始的 10 Connection connection=DriverManager.getConnection(url, username, password);
若是咱們每次操做數據庫,都要先編寫這些代碼來獲取數據庫鏈接,未免太麻煩,爲了實現代碼的重用性,加快開發進度,咱們將獲取數據庫鏈接的方法封裝成一個工具類,只須要經過該類調用相應的方法就能夠獲取數據的鏈接。spa
具體步驟以下:code
一、新建類,咱們一般定義類名爲JDBCUtils對象
二、加載驅動類 blog
因爲驅動程序不常常改變,且沒有屢次加載數據庫驅動的必要,將加載驅動程序的代碼放在靜態代碼塊中,
靜態代碼塊只在類加載的時候加載一次,且在構造方法前被加載
三、定義靜態Connection類對象
將Connection類的對象定義爲Static,因爲conn被靜態方法getConnection調用,必須修飾爲static
四、定義靜態方法GetConnection,用於獲取數據庫鏈接
五、定義closeStatement方法,用於關閉結果集,statement和connection鏈接
具體代碼以下:
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.sql.Statement; 6
7 public class JDBCUtils { 8 //因爲驅動程序不常常改變,且沒有屢次加載數據庫驅動的必要, 9 //將驅動程序放在靜態代碼塊中,只在類加載的時候加載一次,且在構造方法前被加載
10 private static String driver="com.mysql.jdbc.Driver"; 11 static{ 12 try { 13 Class.forName(driver); 14 } catch (ClassNotFoundException e) { 15 e.printStackTrace(); 16 } 17 } 18 private static Connection conn=null; 19
20 //獲取數據庫鏈接的方法
21 public static Connection getConnection(String url,String user,String password) throws Exception{ 22 conn=DriverManager.getConnection(url, user, password); 23 return conn; 24 } 25
26 //關閉資源的方法
27 public static void closeStament(ResultSet rs,Statement st,Connection conn){ 28 if(rs!=null){ 29 try { 30 rs.close(); 31 } catch (SQLException e) { 32 e.printStackTrace(); 33 } 34 } 35 if(st!=null){ 36 try { 37 st.close(); 38 } catch (SQLException e) { 39 e.printStackTrace(); 40 } 41 } 42 if(conn!=null){ 43 try { 44 conn.close(); 45 } catch (SQLException e) { 46 e.printStackTrace(); 47 } 48 } 49 } 50 }