1. 程式人生 > 實用技巧 >JDBC工具類—如何封裝JDBC

JDBC工具類—如何封裝JDBC

  “獲得資料庫連線”操作,將在以後的增刪改查所有功能中都存在,可以封裝工具類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 static
void 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;
    }
    }
}