[引言]
我們在學習Java編程時,連接數據庫技術(JDBC)是一項必備技能,我們經常需要讀取或操作持久性存儲的結構化數據。那么現在開始,小博老師就開始為大家講解JDBC中的常用操作技術,今天我們來了解JDBC中對數據庫常用操作類的封裝。
[步驟閱讀一]項目添加jdbc驅動
我們想要在Java項目中使用JDBC的功能,就必須要為項目添加JDBC驅動文件(jar),我們一般可以在各種數據庫產品的官網上找到它們,例如mysql數據庫則可以在:http://www.mysql.com/products/connector/中找到驅動文件。
為項目添加了JDBC驅動文件(jar文件)后,我們可以看到項目的Referenced Library中結構如下:
[步驟閱讀二]數據庫操作類的封裝
接下來,我們就進入了本文的重點了,對數據中數據表記錄進行增、刪、改、查的操作是很頻繁的,因此我們在開發過程中,經常會對此類操作進行封裝。今天小博老師就為大家演示一段常見的數據庫操作封裝方式,核心代碼如下:
/**
* JDBC連接MySQL數據庫的操作類
* */
publicclassMySQLDBHelper {
// 靜態變量 ?存放所需連接MySQL數據庫的參數
// 當前案例演示直接賦值 通常需要編寫配置文件
// MySQL數據庫所在的Ip地址
privatestaticStringIPAddress="127.0.0.1";
// MySQL數據庫的端口號
privatestaticintPort= 3306;
// MySQL數據庫的身份登錄名稱
privatestaticStringUsername="root";
// MySQL數據庫的身份登錄密碼
privatestaticStringPassword="";
// 要操作的MySQL數據庫的數據表名稱
privatestaticStringDatabase="bwf";
/**
* 非參數化執行查詢語句的方法
*@paramsql 要執行的查詢SQL語句
*@return查詢到的結果集
* */
publicstaticResultSet query(Stringsql){
ResultSetrs=null;
try{
// 加載mysql驅動
Driverdriver=newDriver();
// 實例化 數據庫連接對象
Connectionconn= DriverManager.getConnection(
"jdbc:mysql://"+IPAddress+":"+Port+"/"+Database+"?useUnicode=true&characterEncoding=utf8",
Username,Password);
// 獲取 命令申明對象
Statementstmt=conn.createStatement();
// 發送 查詢SQL語句去數據庫查詢,返回結果集
rs=stmt.executeQuery(sql);
}catch(Exceptione){
e.printStackTrace();
}
// 返回查詢到的結果集
returnrs;
}
/**
* 參數化執行查詢語句的方法
*@paramsql 要執行的查詢SQL語句
*@paramparams 查詢SQL語句中的參數列表
*@return查詢到的結果集
* */
publicstaticResultSet query(Stringsql,Object[]params){
ResultSetrs=null;
try{
// 加載mysql驅動
Driverdriver=newDriver();
// 實例化 數據庫連接對象
Connectionconn= DriverManager.getConnection(
"jdbc:mysql://"+IPAddress+":"+Port+"/"+Database+"?useUnicode=true&characterEncoding=utf8",
Username,Password);
// 獲取 命令申明對象
PreparedStatementstmt=conn.prepareStatement(sql);
// 為命令申明對象添加參數
for(inti= 0 ;i<=params.length- 1 ;i++ ){
stmt.setObject(i+1,params[i]);
}
// 發送 查詢SQL語句去數據庫查詢,返回結果集
rs=stmt.executeQuery();
}catch(Exceptione){
e.printStackTrace();
}
// 返回查詢到的結果集
returnrs;
}
/**
* 非參數化執行增加、刪除、修改語句的方法
*@paramsql 要執行的增加、刪除、修改SQL語句
*@return數據庫受影響的行數
* */
publicstaticintexecute(Stringsql){
introwNum= 0;
try{
// 加載mysql驅動
Driverdriver=newDriver();
// 實例化 數據庫連接對象
Connectionconn= DriverManager.getConnection(
"jdbc:mysql://"+IPAddress+":"+Port+"/"+Database+"?useUnicode=true&characterEncoding=utf8",
Username,Password);
// 獲取 命令申明對象
Statementstmt=conn.createStatement();
// 發送 查詢SQL語句去數據庫查詢,返回結果集
rowNum=stmt.executeUpdate(sql);
}catch(Exceptione){
e.printStackTrace();
}
// 返回查詢到的結果集
returnrowNum;
}
/**
* 參數化執行增加、刪除、修改語句的方法
*@paramsql 要執行的增加、刪除、修改SQL語句
*@paramparams參數列表
*@return數據庫受影響的行數
* */
publicstaticintexecute(Stringsql,Object[]params){
introwNum= 0;
try{
// 加載mysql驅動
Driverdriver=newDriver();
// 實例化 數據庫連接對象
Connectionconn= DriverManager.getConnection(
"jdbc:mysql://"+IPAddress+":"+Port+"/"+Database+"?useUnicode=true&characterEncoding=utf8",
Username,Password);
// 獲取 命令申明對象
PreparedStatementstmt=conn.prepareStatement(sql);
// 為命令申明對象 添加參數
for(inti= 0 ;i<=params.length- 1;i++ ){
stmt.setObject(i+1,params[i]);
}
// 發送 查詢SQL語句去數據庫查詢,返回結果集
rowNum=stmt.executeUpdate();
}catch(Exceptione){
e.printStackTrace();
}
// 返回查詢到的結果集
returnrowNum;
}
}