2020-05-21

JDBC

1.1 概念

概念:Java DataBase Connectivity 卸夕,Java 數(shù)據(jù)庫連接邢锯,JDBC讓我們可以通過Java操作數(shù)據(jù)庫

JDBC本質(zhì):它是官方推出的一套專門用于操作關(guān)系型數(shù)據(jù)庫的規(guī)則,就是接口。各個(gè)不用的數(shù)據(jù)庫廠商都去實(shí)現(xiàn)這個(gè)接口楣嘁,并提供相應(yīng)的jar包性宏。我們可以使用這些jar包針對不同的關(guān)系型數(shù)據(jù)庫進(jìn)行數(shù)據(jù)庫的操作亥鸠。

1.2 使用步驟

導(dǎo)入jar包(數(shù)據(jù)庫驅(qū)動(dòng)包)mysql-connector-java-5.1.37-bin.jar

導(dǎo)入步驟:

在項(xiàng)目的根目錄下創(chuàng)建 libs 文件夾

將驅(qū)動(dòng)包復(fù)制到 libs 下

右鍵選中此 jar 文件朵纷,點(diǎn)擊 Build Path ,再點(diǎn)擊? Add to Build Path

注:如果導(dǎo)入 jar包報(bào)錯(cuò)晤郑,需要?jiǎng)h除敌呈,刪除的步驟是

右鍵項(xiàng)目,選中 Build Path造寝,選擇 Configure Build Path

找到 libraries 標(biāo)簽頁磕洪,選擇指定的資源點(diǎn)擊 remove

注冊驅(qū)動(dòng)

獲取數(shù)據(jù)庫連接對象

定義SQL語句

獲取執(zhí)行SQL語句的對象

執(zhí)行

接收返回的結(jié)果

處理結(jié)果

釋放資源

1.3 常見錯(cuò)誤

ClassNotFoundException:找不到類,一般是驅(qū)動(dòng)包的類名問題

Unknown database 'xxx':找不到數(shù)據(jù)庫诫龙,一般是數(shù)據(jù)庫庫名的問題

Access denied for user 'xxx'@'localhost' (using password: YES):訪問數(shù)據(jù)庫被拒絕析显,一般是數(shù)據(jù)庫的用戶名或者密碼有誤

SQLException:數(shù)據(jù)庫異常

MySQLSyntaxErrorException:數(shù)據(jù)庫語法錯(cuò)誤

1.4 細(xì)節(jié)問題

注冊驅(qū)動(dòng):告知程序要使用哪一個(gè)數(shù)據(jù)庫的jar包

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

注:mysql5版本以后,注冊驅(qū)動(dòng)的語句可以省略

Connection連接對象

/*

* 參數(shù):

* 1.要連接的數(shù)據(jù)庫:

jdbc:mysql://地址:端口號/庫名 ; 如果地址是本機(jī)签赃,端口是3306叫榕,那么可以寫成:jdbc:mysql:///庫名

* 2.數(shù)據(jù)庫管理員身份的用戶名

* 3.數(shù)據(jù)庫管理員身份的密碼

*/

Connectionconn=DriverManager.getConnection("jdbc:mysql:///0519pm","root","1234");

Statement執(zhí)行對象

用于執(zhí)行SQL語句

executeUpdate(String sql):執(zhí)行增刪改查浑侥,返回 int 值,表示影響的記錄數(shù)

executeQuery(String sql):執(zhí)行查詢晰绎,返回結(jié)果集 ResultSet

ResultSet結(jié)果集對象

用于封裝查詢后的結(jié)果

方法:

next():判斷是否有下一條可遍歷的記錄,返回布爾值

getXxx(參數(shù)):該方法有重載括丁,參數(shù)可以是int荞下,也可以是String;參數(shù)是int時(shí)字段值根據(jù)字段在結(jié)果集中的第幾列獲仁贩伞尖昏;參數(shù)是String時(shí)字段值根據(jù)字段名獲取。

ResultSet构资、Statement抽诉、Connection都需要釋放 close()

形參與SQL語句中的關(guān)鍵字之間要有空格,否則關(guān)鍵字與參數(shù)拼接會(huì)報(bào)錯(cuò)

1.5 SQL注入問題

用一些關(guān)鍵字與字符串進(jìn)行拼接吐绵,會(huì)造成造成安全性的問題

例如:select * from user where username = 'qwer' and password = '1234' or '1' = '1'迹淌; '1' = '1' 是一個(gè)恒等式結(jié)果永遠(yuǎn)為true,而 '1' = '1'前又使用了or關(guān)鍵字己单,從而導(dǎo)致了用戶名和密碼有誤也能成功登錄唉窃。

解決辦法:使用PreparedStatement對象

1.? 參數(shù)參與SQL語句不再使用字符串的拼接,而使用了占位符

占位符中的關(guān)鍵字纹笼,不再以關(guān)鍵字的形態(tài)出現(xiàn)

1.5.1 PreparedStatement的獲取

PreparedStatement pstmt = conn.preparedStatement(String sql)纹份;

將SQL語句預(yù)編譯

1.5.2 PreparedStatement的功能

為占位符設(shè)置值

setXxx(參數(shù)1,參數(shù)2)

參數(shù)1:問號的位置廷痘,從1開始

參數(shù)2:問號位置上的值

執(zhí)行SQL

executeUpdate():執(zhí)行增刪改查蔓涧,返回 int 值,表示影響的記錄數(shù)

executeQuery():執(zhí)行查詢笋额,返回結(jié)果集 ResultSet

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末元暴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鳞陨,更是在濱河造成了極大的恐慌昨寞,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厦滤,死亡現(xiàn)場離奇詭異援岩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)掏导,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門享怀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人趟咆,你說我怎么就攤上這事添瓷∶诽耄” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵鳞贷,是天一觀的道長坯汤。 經(jīng)常有香客問我,道長搀愧,這世上最難降的妖魔是什么惰聂? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮咱筛,結(jié)果婚禮上搓幌,老公的妹妹穿的比我還像新娘。我一直安慰自己迅箩,他們只是感情好溉愁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饲趋,像睡著了一般拐揭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上篙贸,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天投队,我揣著相機(jī)與錄音,去河邊找鬼爵川。 笑死敷鸦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寝贡。 我是一名探鬼主播扒披,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼圃泡!你這毒婦竟也來了碟案?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤颇蜡,失蹤者是張志新(化名)和其女友劉穎价说,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體风秤,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鳖目,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缤弦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片领迈。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狸捅,到底是詐尸還是另有隱情衷蜓,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布尘喝,位于F島的核電站磁浇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瞧省。R本人自食惡果不足惜扯夭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鞍匾。 院中可真熱鬧,春花似錦骑科、人聲如沸橡淑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梁棠。三九已至,卻和暖如春斗埂,著一層夾襖步出監(jiān)牢的瞬間符糊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工呛凶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留男娄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓漾稀,卻偏偏與公主長得像模闲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子崭捍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354