共計 2519 個字符,預計需要花費 7 分鐘才能閱讀完成。
這篇文章給大家介紹 jdbc 連接數(shù)據(jù)庫代碼和步驟是什么,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
1、加載 JDBC 驅(qū)動程序
JDBC 連接數(shù)據(jù)庫之前,首先需要將要連接的數(shù)據(jù)庫驅(qū)動加載到 JVM(Java 虛擬機),
我們可以通過 java.lang.Class 類的靜態(tài)方法 forName(StringclassName)實現(xiàn)。
舉例說明:
try{
// 加載 MySql 的驅(qū)動類
Class.forName(com.mysql.jdbc.Driver
}catch(ClassNotFoundExceptione){
System.out.println(找不到驅(qū)動程序類,加載驅(qū)動失敗!
e.printStackTrace();
}
成功加載后,會將 Driver 類的實例注冊到 DriverManager 類中。
2、其次提供 JDBC 連接的 URL
bull; 連接 URL 定義了連接數(shù)據(jù)庫時的協(xié)議、子協(xié)議、數(shù)據(jù)源標識。
bull; 書寫形式:協(xié)議:子協(xié)議:數(shù)據(jù)源標識
協(xié)議:在 JDBC 中總是以 jdbc 開始
子協(xié)議:是橋連接的驅(qū)動程序或是數(shù)據(jù)庫管理系統(tǒng)名稱。
數(shù)據(jù)源標識:標記找到數(shù)據(jù)庫來源的地址與連接端口。
舉例說明:(MySql 的連接 URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true characterEncoding=gbk;
useUnicode=true:表示使用 Unicode 字符集。如果 characterEncoding 設(shè)置為
gb2312 或 GBK,本參數(shù)必須設(shè)置為 true。characterEncoding=gbk:字符編碼方式。
3、創(chuàng)建數(shù)據(jù)庫的連接
bull; 要連接數(shù)據(jù)庫,需要向 java.sql.DriverManager 請求并獲得 Connection 對象,
該對象代表一個數(shù)據(jù)庫的連接。
bull; 使用 DriverManager 的 getConnectin(Stringurl,Stringusername,
Stringpassword) 方法傳入指定的欲連接的數(shù)據(jù)庫的路徑、數(shù)據(jù)庫的用戶名和
密碼來獲得。
舉例說明:
// 連接 MySql 數(shù)據(jù)庫,用戶名和密碼都是 root
Stringurl= jdbc:mysql://localhost:3306/test
Stringusername= root
Stringpassword= root
try{
Connectioncon=
DriverManager.getConnection(url,username,password);
}catch(SQLExceptionse){
System.out.println(數(shù)據(jù)庫連接失敗!
se.printStackTrace();
}
4、創(chuàng)建一個 Statement
bull; 要執(zhí)行 SQL 語句,必須獲得 java.sql.Statement 實例,Statement 實例分為以下 3
種類型:
1、執(zhí)行靜態(tài) SQL 語句。通常通過 Statement 實例實現(xiàn)。
2、執(zhí)行動態(tài) SQL 語句。通常通過 PreparedStatement 實例實現(xiàn)。
3、執(zhí)行數(shù)據(jù)庫存儲過程。通常通過 CallableStatement 實例實現(xiàn)。
具體的實現(xiàn)方式:
Statementstmt=con.createStatement();
PreparedStatementpstmt=con.prepareStatement(sql);
CallableStatementcstmt=
con.prepareCall({CALLdemoSp(?,?)}
5、執(zhí)行 SQL 語句
Statement 接口提供了三種執(zhí)行 SQL 語句的方法:executeQuery、executeUpdate
和 execute
1、ResultSetexecuteQuery(StringsqlString):執(zhí)行查詢數(shù)據(jù)庫的 SQL 語句
,返回一個結(jié)果集(ResultSet)對象。
2、intexecuteUpdate(StringsqlString):用于執(zhí)行 INSERT、UPDATE 或
DELETE 語句以及 SQLDDL 語句,如:CREATETABLE 和 DROPTABLE 等
3、execute(sqlString): 用于執(zhí)行返回多個結(jié)果集、多個更新計數(shù)或二者組合的
語句。
具體實現(xiàn)的代碼:
ResultSetrs=stmt.executeQuery(SELECT*FROM…
introws=stmt.executeUpdate(INSERTINTO…
booleanflag=stmt.execute(Stringsql);
6、處理結(jié)果
分為兩種情況:
1、執(zhí)行更新返回的是本次操作影響到的記錄數(shù)。
2、執(zhí)行查詢返回的結(jié)果是一個 ResultSet 對象。
bull;ResultSet 包含符合 SQL 語句中條件的所有行,并且它通過一套 get 方法提供了對這些
行中數(shù)據(jù)的訪問。
bull; 使用結(jié)果集(ResultSet)對象的訪問方法獲取數(shù)據(jù):
while(rs.next()){
Stringname=rs.getString(name
Stringpass=rs.getString(1);// 此方法比較高效
}
(列是從左到右編號的,并且從列 1 開始)
7、關(guān)閉 JDBC 對象
操作完成以后要把所有使用的 JDBC 對象全都關(guān)閉,以釋放 JDBC 資源,關(guān)閉順序和聲
明順序相反:
1、關(guān)閉記錄集
2、關(guān)閉聲明
3、關(guān)閉連接對象
if(rs!=null){// 關(guān)閉記錄集
try{
rs.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
if(stmt!=null){// 關(guān)閉聲明
try{
stmt.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
if(conn!=null){// 關(guān)閉連接對象
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
關(guān)于 jdbc 連接數(shù)據(jù)庫代碼和步驟是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。