創建JDBCUtils工具類
阿新 • • 發佈:2019-04-30
數據庫連接 jdbcutil exceptio exception private 配置 jdb 釋放 void
JDBCUtils工具類
- 私有化構造函數,外界無法直接創建對象
- 提供公共的,靜態的,getConnection 方法,用來給外界提供數據庫連接
- 提供公共的,靜態的,close方法,用來釋放資源
package cn.tedu.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ResourceBundle; /** * 這個類用來提供jdcb的工具類 1.1 私有化構造函數,外界無法直接創建對象 1.2 提供公共的,靜態的,getConnection 方法,用來給外界提供數據庫連接 1.3 提供公共的,靜態的,close方法,用來釋放資源 1.4 測試類 */ public class JDBCUtils { //1,私有化構造函數,外界無法直接創建對象 private JDBCUtils(){} //只加載一次屬性文件 static ResourceBundle rb = null; static{ //a,,,,讀取屬性文件 rb = ResourceBundle.getBundle("jdbc"); } //2,提供公共的,靜態的,getConnection 方法, //用來給外界提供數據庫連接 public static Connection getConnection(){ try { //1,註冊驅動 //b,,獲取屬性文件裏的內容 Class.forName(rb.getString("driverClass")); //2,獲取數據庫連接 String url=rb.getString("jdbcUrl"); String user=rb.getString("user"); String password=rb.getString("password"); Connection conn = DriverManager.getConnection(url, user, password); return conn; } catch (Exception e) { e.printStackTrace(); } return null; } //3,提供公共的,靜態的,close方法, //用來釋放資源 public static void close(ResultSet rs, Statement st,Connection conn){ //釋放結果集資源 //非空判斷,防止空指針異常 if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); }finally{ rs=null;//手動置空 } } //釋放傳輸器資源 //非空判斷,防止空指針異常 if(st!=null){ try { st.close(); } catch (SQLException e) { e.printStackTrace(); }finally{ st=null;//手動置空 } } //釋放數據庫連接資源 //非空判斷,防止空指針異常 if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); }finally{ conn=null;//手動置空 } } }
測試類
package cn.tedu.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.junit.Test; import com.mysql.jdbc.Driver; import cn.tedu.util.JDBCUtils; /** * 這個類用來測試工具類 */ public class TestUtils { //單元測試方法:@Test + void @Test public void hello(){ Connection conn = null;//聲明連接對象 Statement st = null;//聲明傳輸器對象 ResultSet rs = null;//聲明結果集對象 try { //1,註冊驅動 2,獲取數據庫連接 conn = JDBCUtils.getConnection(); //3,獲取傳輸器java.sql.Statement st = conn.createStatement(); // 4,執行SQL。java.sql.ResultSet String sql ="select * from user"; rs = st.executeQuery(sql); // 5,遍歷結果集 while(rs.next()){ //根據列的索引獲取第一列的數據 // String id = rs.getString(1); //根據列的名字獲取第一列的數據 String id = rs.getString("id"); // int id1 = rs.getInt(1); //根據列的索引獲取第二列的數據 String username = rs.getString(2); //根據列的索引獲取第三列的數據 String password = rs.getString(3); System.out.println(id+username+password); } } catch (SQLException e) { e.printStackTrace(); }finally{//保證資源一定會被釋放 // 6,釋放資源 JDBCUtils.close(rs, st, conn); } } }
準備數據
配置文件的開發形式
//2,提供公共的,靜態的,getConnection 方法, //用來給外界提供數據庫連接 public static Connection getConnection(){ try { //a,,,,讀取屬性文件 ResourceBundle rb = ResourceBundle.getBundle("jdbc"); //1,註冊驅動 //b,,獲取屬性文件裏的內容 Class.forName(rb.getString("driverClass")); //2,獲取數據庫連接 String url=rb.getString("jdbcUrl"); String user=rb.getString("user"); String password=rb.getString("password"); Connection conn = DriverManager.getConnection( url, user, password); return conn; } catch (Exception e) { e.printStackTrace(); } return null; }
創建JDBCUtils工具類