JDBC的介紹和數(shù)據(jù)庫的連接

聲明:本欄目所使用的素材都是凱哥學(xué)堂VIP學(xué)員所寫,學(xué)員有權(quán)匿名,對文章有最終解釋權(quán);凱哥學(xué)堂旨在促進(jìn)VIP學(xué)員互相學(xué)習(xí)的基礎(chǔ)上公開筆記。



JDBC的介紹:


1.JDBC設(shè)計理念:
java依賴數(shù)據(jù)庫去存儲程序需要的數(shù)據(jù)龄章,我們用java寫好一個程序后,我們會把這個程序所需要的數(shù)據(jù)都存儲到數(shù)據(jù)庫中乞封,當(dāng)客戶運(yùn)行程序時做裙,程序需要讀取數(shù)據(jù)庫中的數(shù)據(jù),實(shí)現(xiàn)這個操作的就是JDBC肃晚。而為了規(guī)范锚贱,為了統(tǒng)一管理,把責(zé)任都轉(zhuǎn)給數(shù)據(jù)庫開發(fā)商(在接口中詳細(xì)講解過)关串,java只負(fù)責(zé)寫出一系列的接口惋鸥,至于怎么去實(shí)現(xiàn)【學(xué)Java,到凱哥學(xué)堂kaige123.com】這些接口悍缠,那就都是數(shù)據(jù)庫開發(fā)商的事情了卦绣,所以JDBC API中除了有一個操作類其他都是接口。


2.什么是驅(qū)動類:


數(shù)據(jù)庫開發(fā)商為了能讓java程序連接到自己的數(shù)據(jù)庫上飞蚓,他們就必須要自己寫實(shí)現(xiàn)這些接口的類滤港,然后打成jar包交給程序員,這樣只要程序員將這些jar包加入到工程中去,那這個程序就可以讀取數(shù)據(jù)庫里面的數(shù)據(jù)了溅漾。而這些實(shí)現(xiàn)接口的操作類就被稱為驅(qū)動類山叮。
3.JDBC常用接口介紹(在java.sql包下面):


DirverManager(驅(qū)動管理員):這是一個操作類,用于創(chuàng)建Connection對象添履。
Connection:數(shù)據(jù)庫連接對象
Statement:SQL執(zhí)行對象
PreparedStatement:SQL預(yù)處理執(zhí)行對象
ResultSet:查詢的結(jié)果集
ResultSetMetaData:查詢表結(jié)構(gòu)
CallableStatement:存儲過程調(diào)用

連接數(shù)據(jù)庫步驟:


1.要連接什么數(shù)據(jù)庫就去找什么數(shù)據(jù)庫的驅(qū)動然后添加到工程中去屁倔,其實(shí)就是下載相應(yīng)的jar包(下面以連接MySQL數(shù)據(jù)庫為例):


1.1Maven工程:


image

去中央庫找到此jar包,在pom中添加依賴即可:


1.2普通java工程:


找到工程jar包暮胧,將其復(fù)制到工程中锐借,然后選中工程中的這個jar包,右鍵點(diǎn)擊添加到Build Path中即可往衷,jar包可自行上網(wǎng)下載钞翔,此處本人采用的是上述Maven工程下載下來的jar包。
注意:如果想刪除此jar包席舍,需先選中對應(yīng)的那個小瓶子圖案然后右鍵選擇remove from build path布轿,再刪除粘貼進(jìn)去的jar包即可。
2啟動數(shù)據(jù)庫来颤,保證數(shù)據(jù)庫可以網(wǎng)絡(luò)連接方式


3加載驅(qū)動


image
image
image

3.1加載驅(qū)動的原理和目的:加載驅(qū)動實(shí)際上就是為了加載Driver類汰扭,這樣Driver類里面的靜態(tài)塊就會執(zhí)行,執(zhí)行后就會馬上注冊驅(qū)動到驅(qū)動管理員類中福铅。下圖是Driver類里面的內(nèi)容:

所以首先我們要加載Driver類:加載類有多種方式东且,可以new它的對象,可以用專門加載類的方法Class.forName()等本讥,一般我們都傾向于使用加載類的方法,代碼如下圖:

3.2有些數(shù)據(jù)庫其實(shí)已經(jīng)自動幫我們加載Driver類了鲁冯,所以就算我們在代碼中不加載Driver類拷沸,運(yùn)行時也會自動幫我們加載,如MySQL和Oracle數(shù)據(jù)庫就是這樣的薯演。
3.3如何判斷數(shù)據(jù)庫有沒有自動幫我們加載Driver類:在數(shù)據(jù)庫jar包中看看有沒有在META-INF/servies目錄下寫著自動加載的文件撞芍。以MySQL為例,在其目錄下找到了java.sql.Driver文件跨扮,里面內(nèi)容如下:


4.使用DriverManager管理員序无,創(chuàng)建Connection對象


4.1在創(chuàng)建對象時,我們需要傳進(jìn)三個參數(shù):url衡创,用戶名帝嗡,密碼
4.2 url:用來告訴類連接的是什么數(shù)據(jù)庫,服務(wù)器的地址和端口璃氢,數(shù)據(jù)庫名字以及其它設(shè)置(如字體設(shè)置之類的)
4.3 MySQL中url的寫法:
4.3.1默認(rèn)本地和默認(rèn)的3306端口:
jdbc:mysql:///數(shù)據(jù)庫名字
4.3.2自定義:


jdbc:mysql://服務(wù)器地址:服務(wù)器端口/數(shù)據(jù)庫名字
如果用此種方式寫默認(rèn)的那就是
jdbc:mysql://localhost(寫本地地址):3306/mysql

4.3.3解決中文亂碼問題(如果數(shù)據(jù)庫里的是中文而導(dǎo)出來的不是中文或者加進(jìn)去的是中文哟玷,但在數(shù)據(jù)庫中卻是以亂碼的形式存在則可以用此種寫法解決)
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
注意:此處設(shè)置的字符集和數(shù)據(jù)庫中的字符集要一致,這里是UTF-8一也,那么數(shù)據(jù)庫中也必須是UTF-8巢寡。


4.4代碼實(shí)現(xiàn):


image


5.各種數(shù)據(jù)庫連接的代碼提示要點(diǎn):


oracle數(shù)據(jù)庫
driverClass:oracle.jdbc.driver.OracleDriver
url:jdbc:oracle:thin:@127.0.0.1:1521:dbname
mysql數(shù)據(jù)庫
driverClass:com.mysql.jdbc.Driver

(PS:有的時候喉脖,mysql的驅(qū)動類也也會看到使用org.gjt.mm.mysql.Driver 的情況,org.gjt.mm.mysql.Driver是早期的驅(qū)動名稱抑月,后來就改名為com.mysql.jdbc.Driver树叽,現(xiàn)在一般都推薦使用 com.mysql.jdbc.Driver。在最新版本 的mysql jdbc驅(qū)動中谦絮,為了保持對老版本的兼容题诵,仍然保留了 org.gjt.mm.mysql.Driver,但是實(shí)際上 org.gjt.mm.mysql.Driver中調(diào)用了 com.mysql.jdbc.Driver挨稿,因此現(xiàn)在這兩個驅(qū)動沒有什么區(qū)別仇轻。)


url:jdbc:mysql://localhost:3306/mydb
DB2數(shù)據(jù)庫
driverClass:com.ibm.db2.jcc.DB2Driver
url:jdbc:db2://127.0.0.1:50000/dbname
sybase數(shù)據(jù)庫
driverClass:com.sybase.jdbc.SybDriver
url:jdbc:sybase:Tds:localhost:5007/dbname
PostgreSQL數(shù)據(jù)庫
driverClass:org.postgresql.Driver
url:jdbc:postgresql://localhost/dbname
Sql Server2000數(shù)據(jù)庫
driverClass:com.microsoft.jdbc.sqlserver.SQLServerDriver
url:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname
Sql Server2005數(shù)據(jù)庫
driverClass:com.microsoft.sqlserver.jdbc.SQLServerDriver
url:jdbc:sqlserver://localhost:1433; DatabaseName=dbname

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市奶甘,隨后出現(xiàn)的幾起案子篷店,更是在濱河造成了極大的恐慌,老刑警劉巖臭家,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疲陕,死亡現(xiàn)場離奇詭異,居然都是意外死亡钉赁,警方通過查閱死者的電腦和手機(jī)蹄殃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來你踩,“玉大人诅岩,你說我怎么就攤上這事〈ぃ” “怎么了吩谦?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長膝藕。 經(jīng)常有香客問我式廷,道長,這世上最難降的妖魔是什么芭挽? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任滑废,我火速辦了婚禮,結(jié)果婚禮上袜爪,老公的妹妹穿的比我還像新娘蠕趁。我一直安慰自己,他們只是感情好辛馆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布妻导。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倔韭。 梳的紋絲不亂的頭發(fā)上术浪,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機(jī)與錄音寿酌,去河邊找鬼胰苏。 笑死,一個胖子當(dāng)著我的面吹牛醇疼,可吹牛的內(nèi)容都是我干的硕并。 我是一名探鬼主播秧荆,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乙濒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颁股,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤么库,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后甘有,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亏掀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滤愕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片温算。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖该互,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情韭畸,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布随橘,位于F島的核電站,受9級特大地震影響机蔗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一梆掸、第九天 我趴在偏房一處隱蔽的房頂上張望牙言。 院中可真熱鬧酸钦,春花似錦咱枉、人聲如沸卑硫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亿乳。三九已至,卻和暖如春风皿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桐款。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留魔眨,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓侄刽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親州丹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

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

  • 本人的環(huán)境為Myeclipse10墓毒、MySQL5.7.15 本文包括:簡介JDBC編程步驟打通數(shù)據(jù)庫程序詳解—Dr...
    廖少少閱讀 3,944評論 7 39
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法亲怠,類相關(guān)的語法,內(nèi)部類的語法团秽,繼承相關(guān)的語法主胧,異常的語法,線程的語...
    子非魚_t_閱讀 31,625評論 18 399
  • 其實(shí) 凡塵中的我們 心里多多少少都有林黛玉一樣的真 所以林黛玉會是我們心之一角的純 說到林黛玉 聽到林黛玉 心里的...
    茶潤人生閱讀 204評論 0 1
  • 昨晚十二點(diǎn)一過间螟,我開始鉆在被窩里大哭损肛。 為什么跋崞啤治拿?摩泪!因?yàn)槲?2歲了劫谅。 其實(shí)我也不知道自己在哭什么,好不容易擠進(jìn)了大...
    花仙子醬閱讀 540評論 7 6
  • 定義 BFC(Block formatting context)直譯為"塊級格式化上下文"捏检。它是一個獨(dú)立的渲染區(qū)域...
    Arno_z閱讀 2,553評論 1 5