JDBC_06封裝JDBC工具類
阿新 • • 發佈:2021-07-29
JDBC_06封裝JDBC工具類
1.有哪些程式碼可以封裝進工具類
分析如下jdbc程式:
package com.tsccg.jdbc.util; import java.sql.*; /** * @Author: TSCCG * @Date: 2021/07/29 13:00 * 工具類抽離模板 */ public class JdbcTest01 { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { //1.註冊驅動 Class.forName("com.mysql.jdbc.Driver"); //2.獲取連線 String url = "jdbc:mysql://localhost:3306/tsccg"; String user = "root"; String password = "123456"; conn = DriverManager.getConnection(url,user,password); //3.獲取預編譯資料庫操作物件 String sql = "select ename from emp where ename like ?"; ps = conn.prepareStatement(sql); //給佔位符賦值 ps.setString(1,"__A%"); //4.執行sql語句 rs = ps.executeQuery(); //5.處理查詢結果集 while (rs.next()) { System.out.println(rs.getString("ename")); } } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } finally { //6.釋放資源 if (rs != null) { try { rs.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } } }
縱觀整個程式,我們可以發現第3、5步的程式碼是不固定的,而第4步的程式碼只有一行,即使封裝進工具類中,使用時也要用一行程式碼呼叫。
所以,我們可以將1、2、6這三步比較固定且冗餘的程式碼封裝進工具類中。
2.實現工具類
package com.tsccg.jdbc.util; import java.sql.*; /** * @Author: TSCCG * @Date: 2021/07/29 12:57 * jdbc工具類 */ public class JdbcUtil { /** * 工具類中的方法都是靜態的,不需要new物件,直接用類名呼叫 * 所以可將構造方法設為私有的,這是模仿在原始碼裡的工具類中構造方法的寫法 */ private JdbcUtil() { } //1.註冊驅動 //註冊驅動只需要執行一次,可放進靜態程式碼塊中。 //只要一呼叫工具類,就會呼叫工具類的構造方法,隨之就會載入靜態程式碼塊中的內容 static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 2.獲取連線物件 * @return 資料庫連線物件 * @throws SQLException 上拋SQL異常 */ public static Connection connect() throws SQLException { String url = "jdbc:mysql://localhost:3306/tsccg"; String user = "root"; String password = "123456"; return DriverManager.getConnection(url,user,password); } /** * 6.關閉資源 * @param rs 查詢結果集 * @param stmt 可操作資料庫物件 * @param conn 連線物件 */ public static void close(Connection conn, Statement stmt, ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
3.測試工具類
先使用工具類改造前面的程式
package com.tsccg.jdbc.util; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * @Author: TSCCG * @Date: 2021/07/29 13:19 * 實現模糊查詢 * 使用jdbc工具類 */ public class JdbcLikeDemo01 { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { //1.註冊、2.獲取連線 conn = JdbcUtil.connect(); //3.獲取預編譯的資料庫操作物件 String sql = "select ename from emp where ename like ?"; ps = conn.prepareStatement(sql); //查詢第三個字母為A的員工名字 ps.setString(1,"__A%"); //4.執行sql語句 rs = ps.executeQuery(); //5.處理查詢結果集 while (rs.next()) { System.out.println(rs.getString("ename")); } } catch (SQLException throwables) { throwables.printStackTrace(); } finally { //6.關閉資源 JdbcUtil.close(conn,ps,rs); } } }
結果:
BLAKE
CLARK
ADAMS