JDBC工具類—如何封裝JDBC
阿新 • • 發佈:2020-07-27
“獲得資料庫連線”操作,將在以後的增刪改查所有功能中都存在,可以封裝工具類JDBCUtils。提供獲取連線物件的方法,從而達到程式碼的重複利用。
該工具類提供方法:public static Connection getConn ()。程式碼如下:
package com.oracle.tools; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;public class JDBCUtils { public static <PreparedStatement> Connection getConn(){ Connection conn=null; try { //註冊 Class.forName("com.mysql.jdbc.Driver"); //獲取連結地址(URL, USER, PASSWORD); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/oa?" + "characterEncoding=utf8", "root", "123456"); }catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //返回連線 return conn; } //釋放資源 public staticvoid close(Connection conn,PreparedStatement pst){ if(pst!=null){ try { pst.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //釋放資源2,這裡利用了方法過載 public static void close(Connection conn,PreparedStatement pst,ResultSet rs){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(pst!=null){ try { pst.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
try...catch方法寫的過程中可以使用快捷方式直接點出來,節省程式碼時間,
當然,需要大家先熟記這種方法之後,在使用快捷方式。
JDBC類封裝之後,用的時候需要先進行導包,然後再呼叫裡面的方法
//導包 import com.oracle.tools.JDBCU; public class AdminDao { //以下是sql新增語句 public int ryadd(Emp emp) throws SQLException{ //呼叫JDBC類註冊、連結方法 Connection conn=JDBCUtils.getConn(); // 獲得預處理物件 String sql="insert into emp(enumber,epwd,ename,esex,edate,ehome,ephone,did,erank) values(?,?,?,?,?,?,?,?,?)"; PreparedStatement pst=conn.prepareStatement(sql); //SQL語句佔位符設定實際引數 pst.setString(1, emp.getEnumber()); pst.setString(2, emp.getEpwd()); pst.setString(3, emp.getEname()); pst.setString(4, emp.getEsex()); pst.setDate(5, emp.getEdate()); pst.setString(6, emp.getEhome()); pst.setString(7, emp.getEphone()); pst.setInt(8, emp.getDid()); pst.setString(9, emp.getErank()); // 執行SQL語句 int row=pst.executeUpdate(); // 呼叫JDBC類釋放資源方法 JDBCUtils.close(conn, pst); return row; } } }