JDBC的簡介
???????? JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫開發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純 Java API 編寫數(shù)據(jù)庫應(yīng)用程序,操作不同的數(shù)據(jù)庫需要使用不同的JDBC。
JDBC編程步驟
一、Load the Driver? 加載JDBC驅(qū)動(dòng)程序
???????? DriverManager管理一組JDBC驅(qū)動(dòng)程序的基本服務(wù)。可以想象成一個(gè)管家,通過注冊DriverManager可以拿到跟數(shù)據(jù)庫的一根鏈接。
????????? 首先新建一個(gè)項(xiàng)目,過程不再贅述。右擊項(xiàng)目->Build Path -> Add External Archives。然后選擇sqljdbc4.jar
???????? 然后實(shí)例化SQLServerDriver,打開jar包你會(huì)發(fā)現(xiàn)它的路徑是com.microsoft.sqlserver.jdbc.SQLServerDriver。實(shí)例化有兩種方法:
??? 1、使用Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");?
?????????? Class 與class不同,Class是一個(gè)類
???? 2、 new com.microsoft.sqlserver.jdbc.SQLServerDriver();
????? 兩種方法都差不多,沒啥區(qū)別,看個(gè)人愛好了。
?二、連接數(shù)據(jù)庫
1
Connection conn = DriverManager.getConnection(, , ,);
??? getConnection有三個(gè)參數(shù)。
????????? 第一個(gè)參數(shù)是數(shù)據(jù)庫的連接字符串,這個(gè)需要根據(jù)實(shí)際情況的不同而有所不同。
????????? 第二個(gè)是用戶名
? ? ? ? ? 第三個(gè)是密碼
三、Execute the SQL 執(zhí)行數(shù)據(jù)庫語句
? ? ? ? 執(zhí)行數(shù)據(jù)庫語句前要?jiǎng)?chuàng)建一個(gè)語句對象。Statement
1
Statement stmt = conn.createStatement(); ????????????????????????
? 四、處理得到的結(jié)果集
1
ResultSet rs = stmt.executeQuery("select * from dept");
???????? 返回來的結(jié)果集rs,指針指向第一條數(shù)據(jù)的前面,所以需要先next一下。
1
while
( rs.next()){
2
3
rs.getString();
4
5
rs.getInt();
6
7
……
8
}
五、關(guān)閉數(shù)據(jù)庫
??????????? 原則上,后打開的先關(guān)閉
ResultSet.close
Statement.close
Connection.close
?
下面是完整代碼:
?
1
import
java.sql.*
;
2
public
class
JTest{
3
4
public
static
void
main(String[] args)
throws
Exception{
5
String JDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
6
String connectDB="jdbc:sqlserver://ABYSS-PC\\MYABYSS:64160;DatabaseName=master"
;
7
//
實(shí)例化驅(qū)動(dòng)
8
Class.forName(JDriver);
9
String user ="sa"
;
10
String possword = ""
;
11
//
連接數(shù)據(jù)庫
12
Connection conn =
13
DriverManager.getConnection(connectDB, user, possword);
14
//
創(chuàng)建語句對象
15
Statement stmt =
conn.createStatement();
16
//
執(zhí)行select語句
17
ResultSet rs =
18
stmt.executeQuery("Select * from dept"
);
19
//
循環(huán)獲取結(jié)果集
20
while
( rs.next()){
21
System.out.println(rs.getString("deptno"
));
22
System.out.println(rs.getInt("deptno"
));
23
}
24
//
關(guān)閉數(shù)據(jù)庫,遵循后打開先關(guān)閉的原則。
25
rs.close();
26
stmt.close();
27
conn.close();
28
}
29
}
?
?
?
JDBC編程大致就這么些步驟,不過以上的代碼太不專業(yè)了,而且有點(diǎn)問題。實(shí)例化驅(qū)動(dòng)、連接數(shù)據(jù)庫、創(chuàng)建語句對象等代碼都會(huì)拋出異常,假若在程序運(yùn)行的過程中出現(xiàn)異常而導(dǎo)致程序終止,后面的關(guān)閉數(shù)據(jù)庫的語句不會(huì)被執(zhí)行,而且被申請的內(nèi)存不會(huì)被釋放,長此以往會(huì)導(dǎo)致資源的耗盡。因此這里需要將throws 改為try/catch。
import
java.sql.*
;
public
class
JText {
public
static
void
main(String[] args) {
String JDriver
= "com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
String connectDB
="jdbc:sqlserver://ABYSS-PC\\MYABYSS:64160;DatabaseName=master"
;
String user
="sa"
;
String possword
= ""
;
Connection conn
=
null
;
Statement stmt
=
null
;
ResultSet rs
=
null
;
try
{
//
實(shí)例化驅(qū)動(dòng)
Class.forName(JDriver);
//
連接數(shù)據(jù)庫
conn =
DriverManager.getConnection(connectDB, user, possword);
//
創(chuàng)建語句對象
stmt =
conn.createStatement();
//
執(zhí)行select語句
rs = stmt.executeQuery("Select * from dept"
);
//
循環(huán)獲取結(jié)果集
while
( rs.next()){
System.out.println(rs.getString(
"deptno"
));
System.out.println(rs.getInt(
"deptno"
));
}
}
catch
(ClassNotFoundException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(SQLException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try
{
//
關(guān)閉數(shù)據(jù)庫,遵循后打開先關(guān)閉的原則。
if
(rs !=
null
){
//
在關(guān)閉之前,判斷一下是否為空
rs.close();
//
關(guān)閉之后 釋放資源,這是一個(gè)很好的習(xí)慣
rs =
null
;
}
if
(stmt !=
null
){
stmt.close();
stmt
=
null
;
}
if
(conn !=
null
){
conn.close();
conn
=
null
;
}
}
catch
(SQLException e){
e.printStackTrace();
}
}
}
}
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

