Java JDBC連接

JDBC連接數(shù)據(jù)庫(kù)

?創(chuàng)建一個(gè)以JDBC連接數(shù)據(jù)庫(kù)的程序林说,包含7個(gè)步驟:

1、加載JDBC驅(qū)動(dòng)程序:

在連接數(shù)據(jù)庫(kù)之前兴革,首先要加載想要連接的數(shù)據(jù)庫(kù)的驅(qū)動(dòng)到JVM(Java虛擬機(jī))趣席,

這通過(guò)java.lang.Class類(lèi)的靜態(tài)方法forName(String??className)實(shí)現(xiàn)。

例如:

try{

//加載MySql的驅(qū)動(dòng)類(lèi)

Class.forName("com.mysql.jdbc.Driver")?;

}catch(ClassNotFoundException?e){

System.out.println("找不到驅(qū)動(dòng)程序類(lèi)?汤功,加載驅(qū)動(dòng)失敗溜哮!");

e.printStackTrace()?;

}

成功加載后滔金,會(huì)將Driver類(lèi)的實(shí)例注冊(cè)到DriverManager類(lèi)中。

2茂嗓、提供JDBC連接的URL

?連接URL定義了連接數(shù)據(jù)庫(kù)時(shí)的協(xié)議餐茵、子協(xié)議、數(shù)據(jù)源標(biāo)識(shí)述吸。

?書(shū)寫(xiě)形式:協(xié)議:子協(xié)議:數(shù)據(jù)源標(biāo)識(shí)

協(xié)議:在JDBC中總是以jdbc開(kāi)始

子協(xié)議:是橋連接的驅(qū)動(dòng)程序或是數(shù)據(jù)庫(kù)管理系統(tǒng)名稱(chēng)忿族。

數(shù)據(jù)源標(biāo)識(shí):標(biāo)記找到數(shù)據(jù)庫(kù)來(lái)源的地址與連接端口。

例如:(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ù)庫(kù)的連接

?要連接數(shù)據(jù)庫(kù),需要向java.sql.DriverManager請(qǐng)求并獲得Connection對(duì)象茅逮,

該對(duì)象就代表一個(gè)數(shù)據(jù)庫(kù)的連接璃赡。

?使用DriverManager的getConnectin(String?url?,?String?username?,

String?password?)方法傳入指定的欲連接的數(shù)據(jù)庫(kù)的路徑、數(shù)據(jù)庫(kù)的用戶名和

密碼來(lái)獲得献雅。

例如:

//連接MySql數(shù)據(jù)庫(kù)碉考,用戶名和密碼都是root

String?url?="jdbc:mysql://localhost:3306/test";

String?username?="root";

String?password?="root";

try{

Connection?con?=

DriverManager.getConnection(url?,?username?,?password?)?;

}catch(SQLException?se){

System.out.println("數(shù)據(jù)庫(kù)連接失敗惩琉!");

se.printStackTrace()?;

}

4豆励、創(chuàng)建一個(gè)Statement

?要執(zhí)行SQL語(yǔ)句,必須獲得java.sql.Statement實(shí)例,Statement實(shí)例分為以下3

種類(lèi)型:

1良蒸、執(zhí)行靜態(tài)SQL語(yǔ)句技扼。通常通過(guò)Statement實(shí)例實(shí)現(xiàn)。

2嫩痰、執(zhí)行動(dòng)態(tài)SQL語(yǔ)句剿吻。通常通過(guò)PreparedStatement實(shí)例實(shí)現(xiàn)。

3串纺、執(zhí)行數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程丽旅。通常通過(guò)CallableStatement實(shí)例實(shí)現(xiàn)。

具體的實(shí)現(xiàn)方式:

Statement?stmt?=?con.createStatement()?;

PreparedStatement?pstmt?=?con.prepareStatement(sql)?;

CallableStatement?cstmt?=

con.prepareCall("{CALL?demoSp(??,??)}")?;

5纺棺、執(zhí)行SQL語(yǔ)句

Statement接口提供了三種執(zhí)行SQL語(yǔ)句的方法:executeQuery?榄笙、executeUpdate

和execute

1、ResultSet?executeQuery(String?sqlString):執(zhí)行查詢數(shù)據(jù)庫(kù)的SQL語(yǔ)句

祷蝌,返回一個(gè)結(jié)果集(ResultSet)對(duì)象茅撞。

2、intexecuteUpdate(String?sqlString):用于執(zhí)行INSERT巨朦、UPDATE或

DELETE語(yǔ)句以及SQL?DDL語(yǔ)句米丘,如:CREATE?TABLE和DROP?TABLE等

3、execute(sqlString):用于執(zhí)行返回多個(gè)結(jié)果集糊啡、多個(gè)更新計(jì)數(shù)或二者組合的

語(yǔ)句拄查。

具體實(shí)現(xiàn)的代碼:

ResultSet?rs?=?stmt.executeQuery("SELECT?*?FROM?...")?;

introws?=?stmt.executeUpdate("INSERT?INTO?...")?;

booleanflag?=?stmt.execute(String?sql)?;

6、處理結(jié)果

兩種情況:

1棚蓄、執(zhí)行更新返回的是本次操作影響到的記錄數(shù)堕扶。

2、執(zhí)行查詢返回的結(jié)果是一個(gè)ResultSet對(duì)象癣疟。

??ResultSet包含符合SQL語(yǔ)句中條件的所有行挣柬,并且它通過(guò)一套get方法提供了對(duì)這些

行中數(shù)據(jù)的訪問(wèn)。

??使用結(jié)果集(ResultSet)對(duì)象的訪問(wèn)方法獲取數(shù)據(jù):

while(rs.next()){

String?name?=?rs.getString("name")?;

String?pass?=?rs.getString(1)?;//?此方法比較高效

}

(列是從左到右編號(hào)的睛挚,并且從列1開(kāi)始)

7、關(guān)閉JDBC對(duì)象

操作完成以后要把所有使用的JDBC對(duì)象全都關(guān)閉急黎,以釋放JDBC資源扎狱,關(guān)閉順序和聲

明順序相反:

1、關(guān)閉記錄集

2勃教、關(guān)閉聲明

3淤击、關(guān)閉連接對(duì)象

if(rs?!=null){//?關(guān)閉記錄集

try{

rs.close()?;

}catch(SQLException?e){

e.printStackTrace()?;

}

}

if(stmt?!=null){//?關(guān)閉聲明

try{

stmt.close()?;

}catch(SQLException?e){

e.printStackTrace()?;

}

}

if(conn?!=null){//?關(guān)閉連接對(duì)象

try{

conn.close()?;

}catch(SQLException?e){

e.printStackTrace()?;

}

}

Java使用JDBC連接數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法_java_腳本之家

JAVA使用JDBC連接MySQL數(shù)據(jù)庫(kù) - 叢林聽(tīng)雨 - ITeye技術(shù)網(wǎng)站

JDBC連接MySQL - TrustNature - 博客園

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市故源,隨后出現(xiàn)的幾起案子污抬,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件印机,死亡現(xiàn)場(chǎng)離奇詭異矢腻,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)射赛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)多柑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人楣责,你說(shuō)我怎么就攤上這事竣灌。” “怎么了秆麸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵初嘹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我沮趣,道長(zhǎng)削樊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任兔毒,我火速辦了婚禮漫贞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘育叁。我一直安慰自己迅脐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布豪嗽。 她就那樣靜靜地躺著谴蔑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪龟梦。 梳的紋絲不亂的頭發(fā)上隐锭,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音计贰,去河邊找鬼钦睡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛躁倒,可吹牛的內(nèi)容都是我干的荞怒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼秧秉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼褐桌!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起象迎,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤荧嵌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體啦撮,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谭网,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逻族。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜻底。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖聘鳞,靈堂內(nèi)的尸體忽然破棺而出薄辅,到底是詐尸還是另有隱情,我是刑警寧澤抠璃,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布站楚,位于F島的核電站,受9級(jí)特大地震影響搏嗡,放射性物質(zhì)發(fā)生泄漏窿春。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一采盒、第九天 我趴在偏房一處隱蔽的房頂上張望旧乞。 院中可真熱鬧,春花似錦磅氨、人聲如沸尺栖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)延赌。三九已至,卻和暖如春叉橱,著一層夾襖步出監(jiān)牢的瞬間挫以,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工窃祝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掐松,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓锌杀,卻偏偏與公主長(zhǎng)得像甩栈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子糕再,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • JDBC簡(jiǎn)介 SUN公司為了簡(jiǎn)化、統(tǒng)一對(duì)數(shù)據(jù)庫(kù)的操作玉转,定義了一套Java操作數(shù)據(jù)庫(kù)的規(guī)范突想,稱(chēng)之為JDBC。JDBC...
    奮斗的老王閱讀 1,520評(píng)論 0 51
  • 本人的環(huán)境為Myeclipse10、MySQL5.7.15 本文包括:簡(jiǎn)介JDBC編程步驟打通數(shù)據(jù)庫(kù)程序詳解—Dr...
    廖少少閱讀 3,950評(píng)論 7 39
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法猾担,類(lèi)相關(guān)的語(yǔ)法袭灯,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法绑嘹,異常的語(yǔ)法稽荧,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,661評(píng)論 18 399
  • 我們知道Java中的jdbc是用來(lái)連接應(yīng)用程序和數(shù)據(jù)系統(tǒng)的,本篇文章主要就來(lái)看看關(guān)于JDBC的實(shí)現(xiàn)和使用細(xì)節(jié)工腋。主要...
    Single_YAM閱讀 2,131評(píng)論 2 12
  • 戈壁灘的風(fēng)呼呼地吹進(jìn)邊疆的營(yíng)地姨丈,李云祥和戰(zhàn)友換了班,進(jìn)到屋內(nèi)擅腰,暴露在外的皮膚在觸碰到暖空氣的一刻蟋恬,才再次感覺(jué)到血液...
    洛家仁人閱讀 452評(píng)論 2 2