更新時間:2021-02-20 17:11:26 來源:動力節點 瀏覽1253次
JDBC是Java語言中用來規范客戶端程序如何來訪問數據庫的應用程序接口,提供了諸如查詢和更新數據庫中數據的方法。除此之外,JDBC中還有許多工具類用來實現各種功能,本文我們從源碼出發,來分析一下JDBC工具類的構建。
1. 資源釋放工作的整合
/**
?* 釋放資源
?* @param conn
?* @param st
?* @param rs
?*/
public static void release(Connection conn , Statement st , ResultSet rs){
closeRs(rs);
closeSt(st);
closeConn(conn);
}
private static void closeRs(ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null;
}
}
private static void closeSt(Statement st){
try {
if(st != null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
st = null;
}
}
private static void closeConn(Connection conn){
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null;
}
}
2. 驅動防二次注冊
/**
?* 獲取連接對象
?* @return
?*/
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driverClass);
//靜態代碼塊 ---> 類加載了,就執行。 java.sql.DriverManager.registerDriver(new Driver());
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");
//2. 建立連接 參數一: 協議 + 訪問的數據庫 , 參數二: 用戶名 , 參數三: 密碼。
conn = DriverManager.getConnection(url, name, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
3. 使用properties配置文件
在src底下聲明一個文件 xxx.properties ,里面的內容吐下:
????? driverClass=com.mysql.jdbc.Driver
?????? url=jdbc:mysql://localhost/student
?????? name=root
?????? password=root
在工具類里面,使用靜態代碼塊,讀取屬性
static{
try {
//1. 創建一個屬性配置對象
Properties properties = new Properties();
InputStream is = new FileInputStream("jdbc.properties"); //對應文件位于工程根目錄
?
//使用類加載器,去讀取src底下的資源文件。 后面在servlet ?//對應文件位于src目錄底下
//InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
//導入輸入流。
properties.load(is);
//讀取屬性
driverClass = properties.getProperty("driverClass");
url = properties.getProperty("url");
name = properties.getProperty("name");
password = properties.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
}
}
源代碼如下:
public class JDBCUtil {
static String driverClass = null;
static String url = null;
static String name = null;
static String password= null;
static{
try {
//1. 創建一個屬性配置對象
Properties properties = new Properties();
InputStream is = new FileInputStream("jdbc.properties");
//使用類加載器,去讀取src底下的資源文件。 后面在servlet
// InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
//導入輸入流。
properties.load(is);
//讀取屬性
driverClass = properties.getProperty("driverClass");
url = properties.getProperty("url");
name = properties.getProperty("name");
password = properties.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
?* 獲取連接對象
?* @return
?*/
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driverClass);
//靜態代碼塊 ---> 類加載了,就執行。 java.sql.DriverManager.registerDriver(new Driver());
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");
//2. 建立連接 參數一: 協議 + 訪問的數據庫 , 參數二: 用戶名 , 參數三: 密碼。
conn = DriverManager.getConnection(url, name, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
?* 釋放資源
?* @param conn
?* @param st
?* @param rs
?*/
public static void release(Connection conn , Statement st , ResultSet rs){
closeRs(rs);
closeSt(st);
closeConn(conn);
}
private static void closeRs(ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null;
}
}
private static void closeSt(Statement st){
try {
if(st != null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
st = null;
}
}
private static void closeConn(Connection conn){
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null;
}
}
}
我們通過詳細的代碼不難看出JDBC工具類的構建主要還是對各種文件的配置,在本站的JDBC教程中對JDBC連接數據庫涉及到的各個案例都有很深入的講解,想要學好JDBC的小伙伴就需要深入解析這些代碼,真正弄懂了也就代表我們學會了。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習