JDBC基本知識

大家好略贮,我是IT修真院深圳分院第5期學員送挑,一枚正直善良的JAVA程序員诅福。

今天給大家分享一下,修真院官網(wǎng)JAVA任務1中需忿,JDBC部分的知識點——JDBC連接數(shù)據(jù)庫以及常用操作诅炉。


一、背景介紹

JDBC(java Database connectivity,數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API應用程序編程接口)屋厘,可以為多種關系數(shù)據(jù)庫(mysql涕烧,Oracle)提供統(tǒng)一訪問癌佩,它由一組用JAVA語言編寫的類和接口組成愉烙。可以實現(xiàn)對數(shù)據(jù)庫的增刪改查


二.知識剖析

1.有了JDBC API浅役,可以大量簡化重復性的代碼工作溢谤,就不必為訪問Mysql數(shù)據(jù)庫專門寫一個程序瞻凤,為訪問Oracle數(shù)據(jù)庫又專門寫一個程序,或為訪問DB2數(shù)據(jù)庫又編寫另一個程序等等世杀,程序員只需用JDBC API寫一個程序就夠了阀参,它可向相應數(shù)據(jù)庫發(fā)送SQL調(diào)用。

2.JDBC瞻坝,操作流程分成五個步驟

1).初始化驅(qū)動蛛壳,通過Driver接口。裝載MySql驅(qū)動:Class.forName("com.mysql.jdbc.Driver");裝載Oracle驅(qū)動:Class.forName("oracle.jdbc.driver.OracleDriver");

2).通過Connection對象建立與數(shù)據(jù)庫的連接,提供端口號3306衙荐,數(shù)據(jù)庫名稱how2java捞挥,賬號root,密碼****

3).創(chuàng)建執(zhí)行SQL語句的Statement忧吟。

4).setObject寫入數(shù)據(jù)砌函。理論上來講,任何set方法都可以用setObject代替溜族。

5).execute執(zhí)行更新讹俊。依次關閉ResultSet,Statement斩祭,Connection劣像。

3.Statement三種類

1).Statement,發(fā)送簡單SQL語句(代碼比較)

2).PreparedStatement發(fā)送含一或多個參數(shù)的SQL語句摧玫,比Statement效率高耳奕,可以進行批處理

3).CallableStatement,調(diào)用儲存過程

4.Statement方法

1).execute執(zhí)行查詢語句诬像,返回boolean類型屋群,true表示執(zhí)行的是查詢語句,false表示執(zhí)行的是insert,delete,update等等

2).executeQuery坏挠,運行select語句芍躏,返回ResultSet結(jié)果集

3).executeUpdate,運行insert降狠、update对竣、delete操作,返回int類型榜配,表示有多少條數(shù)據(jù)受到了影響否纬。

5.JDBC的常見用途

1).JDBC的增刪改,插入不同的SQL語句

2).注意查詢要返回數(shù)據(jù)

6.DAO(數(shù)據(jù)庫訪問對象)

先做DAO接口蛋褥,再做類临燃,類實現(xiàn)DAO接口,就必須提供接口中聲明的方法烙心,實現(xiàn)在語法上的關鍵字是implements膜廊。(接口和類的區(qū)別)接口是抽象方法的集合,通常以interface來聲明淫茵,沒有main方法爪瓜,用public修飾,接口無法被實例化匙瘪,但是可以被實現(xiàn)钥勋;類是一個模板炬转,它描述一類對象的行為和狀態(tài),一個實現(xiàn)接口的類算灸,必須實現(xiàn)接口內(nèi)所描述的所有方法,否則就必須聲明為抽象類驻啤,抽象類是被用來創(chuàng)建繼承層級里子類的模板菲驴。


7.連接池

1).當有多個線程,每個線程都需要連接數(shù)據(jù)庫執(zhí)行SQL語句的話骑冗,那么每個線程都會創(chuàng)建一個連接赊瞬,并且在使用完畢后,關閉連接贼涩。創(chuàng)建連接和關閉連接的過程也是比較消耗時間的巧涧,當多線程并發(fā)的時候,系統(tǒng)就會變得很卡頓遥倦。同時谤绳,一個數(shù)據(jù)庫同時支持的連接總數(shù)也是有限的,如果多線程并發(fā)量很大袒哥,那么數(shù)據(jù)庫連接的總數(shù)就會被消耗光缩筛,后續(xù)線程發(fā)起的數(shù)據(jù)庫連接就會失敗。

2.).連接池在使用之前堡称,就會創(chuàng)建好一定數(shù)量的連接瞎抛。 如果有任何線程需要使用連接,那么就從連接池里面借用却紧,而不是自己重新創(chuàng)建. 使用完畢后桐臊,又把這個連接歸還給連接池供下一次或者其他線程使用。 倘若發(fā)生多線程并發(fā)情況晓殊,連接池里的連接被借用光了断凶,那么其他線程就會臨時等待,直到有連接被歸還回來挺物,再繼續(xù)使用懒浮。整個過程,這些連接都不會被關閉识藤,而是不斷的被循環(huán)使用砚著,從而節(jié)約了啟動和關閉連接的時間.


三.常見問題

1.PreparedStatement和Statement有什么區(qū)別?

2.為什么采取了PreparedStatement痴昧,運行時間反倒變慢了稽穆?


4.解決方案

1.Statement每次執(zhí)行SQL語句,相關數(shù)據(jù)庫都要進行SQL語句編譯赶撰,PreparedStatement是預編譯舌镶,對批量處理大大提高效率柱彻,可以防止SQL注入攻擊,防止數(shù)據(jù)庫緩沖池溢出餐胀,代碼的可讀性哟楷,可維護性都更好(運行代碼)

2.preparedstatment是否能提高性能,實際要具體的看數(shù)據(jù)庫服務器端處理復雜SQL的情況否灾,對于oracle而言在復雜的SQL上面二者性能差異明顯(可以使用報表系統(tǒng)的SQL來測試)卖擅,而比較簡單的數(shù)據(jù)庫MySQL而言其性能提升不明顯。這和我們平時的觀念有所出入


六墨技、擴展思考


七惩阶、參考文獻

于博韜師兄的PPT


八、更多討論

提問1.如果JDBC不關閉連接會發(fā)生什么扣汪?存儲過程是什么断楷?

答:請求一個新的?Connection?對象會帶來大量的開銷和很多潛在的錯誤.

浪費內(nèi)存。如果太多的話,可能導致后面的程序連不到數(shù)據(jù)庫

提問2.儲存過程是什么崭别?

答:存儲過程(Stored Procedure)是在大型數(shù)據(jù)庫系統(tǒng)中冬筒,一組為了完成特定功能的SQL 語句集,存儲在數(shù)據(jù)庫中紊遵,經(jīng)過第一次編譯后再次調(diào)用不需要再次編譯账千,用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。存儲過程是數(shù)據(jù)庫中的一個重要對象暗膜。


詳見視頻



undefined_騰訊視頻

感謝大家觀看

今天的分享就到這里啦匀奏,歡迎大家點贊、轉(zhuǎn)發(fā)学搜、留言娃善、拍磚~


技能樹.IT修真院

“我們相信人人都可以成為一個工程師,現(xiàn)在開始瑞佩,找個師兄聚磺,帶你入門,掌控自己學習的節(jié)奏炬丸,學習的路上不再迷锰鼻蓿”。

這里是技能樹.IT修真院稠炬,成千上萬的師兄在這里找到了自己的學習路線焕阿,學習透明化,成長可見化首启,師兄1對1免費指導暮屡。快來與我一起學習吧~


我的邀請碼:19214843毅桃,

或者你可以直接點擊此鏈接:http://www.jnshu.com/login/1/19214843


作者:kewangbuji

鏈接:

來源:簡書

著作權(quán)歸作者所有褒纲。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)准夷,非商業(yè)轉(zhuǎn)載請注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末莺掠,一起剝皮案震驚了整個濱河市衫嵌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汁蝶,老刑警劉巖渐扮,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掖棉,居然都是意外死亡,警方通過查閱死者的電腦和手機膀估,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門幔亥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人察纯,你說我怎么就攤上這事帕棉。” “怎么了饼记?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵香伴,是天一觀的道長。 經(jīng)常有香客問我具则,道長即纲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任博肋,我火速辦了婚禮低斋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匪凡。我一直安慰自己膊畴,他們只是感情好,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布病游。 她就那樣靜靜地躺著唇跨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衬衬。 梳的紋絲不亂的頭發(fā)上买猖,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音佣耐,去河邊找鬼政勃。 笑死,一個胖子當著我的面吹牛兼砖,可吹牛的內(nèi)容都是我干的奸远。 我是一名探鬼主播既棺,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼懒叛!你這毒婦竟也來了丸冕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤薛窥,失蹤者是張志新(化名)和其女友劉穎胖烛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诅迷,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡佩番,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了罢杉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趟畏。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖滩租,靈堂內(nèi)的尸體忽然破棺而出赋秀,到底是詐尸還是另有隱情,我是刑警寧澤律想,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布猎莲,位于F島的核電站,受9級特大地震影響技即,放射性物質(zhì)發(fā)生泄漏著洼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一姥份、第九天 我趴在偏房一處隱蔽的房頂上張望郭脂。 院中可真熱鬧,春花似錦澈歉、人聲如沸展鸡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莹弊。三九已至,卻和暖如春涡尘,著一層夾襖步出監(jiān)牢的瞬間忍弛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工考抄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留细疚,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓川梅,卻偏偏與公主長得像疯兼,于是被迫代替她去往敵國和親然遏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

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

  • 1. 簡介 1.1 什么是 MyBatis 吧彪? MyBatis 是支持定制化 SQL待侵、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,455評論 0 4
  • JDBC概述 在Java中,數(shù)據(jù)庫存取技術(shù)可分為如下幾類:JDBC直接訪問數(shù)據(jù)庫姨裸、JDO技術(shù)秧倾、第三方O/R工具,如...
    usopp閱讀 3,533評論 3 75
  • 1. Java基礎部分 基礎部分的順序:基本語法傀缩,類相關的語法那先,內(nèi)部類的語法,繼承相關的語法赡艰,異常的語法胃榕,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • 簡書首頁 https://www.baidu.com/s?wd=%E7%AE%80%E4%B9%A6&rsv_sp...
    曲智_94d3閱讀 111評論 0 0
  • 最近一直在想錢的事情,以前我從不想瞄摊,不是不想,就是覺得有多少錢我花多少苦掘,沒有拉到换帜。嫁人以前我的靠爸媽生活,嫁人...
    木小槿閱讀 282評論 0 0