JDBC

1......

Driver接口:數(shù)據(jù)庫驅(qū)動程序的接口奕删,所有具體數(shù)據(jù)庫廠商需要的驅(qū)動程序需要實現(xiàn)次接口炼杖。

Connection connect(String url,Properties info)用于獲取數(shù)據(jù)庫連接

2.....

|-Connection接口:與具體的數(shù)據(jù)庫的連接對象合瓢。

Statement ? ? ? ? createStatement()創(chuàng)建一個靜態(tài)sql語句對象

PreparedStatement ? ? ? ?prepareStatement(String sql)創(chuàng)建預(yù)編譯的sql語句對象

(存在sql注入漏洞的bug)

3.....

|-Statement接口:用于執(zhí)行靜態(tài)SQL語句

int ? ? ? ?executeUpdate(String sql)執(zhí)行更新操作的sql語句(create/alter/drop/insert/update/delete)

ResultSet ? ? ?executeQuery(String sql)執(zhí)行查詢操作的sql語句

(select)

(可以防止注入漏洞秩彤,對sql語句進行預(yù)編譯)

|-PreparedStatement接口:用于執(zhí)行預(yù)編譯的SQL語句(是Statement的子接口)

int ? ? ?executeUpdate()執(zhí)行更新操作的sql語句

ResultSet ? ? executeQuery()執(zhí)行查詢操作的sql語句

4......

|-ResultSet接口:結(jié)果集對象肛冶。存儲所有數(shù)據(jù)庫查詢的結(jié)果鲜锚,用該對象進行數(shù)據(jù)遍歷突诬。

booleannext():把光標移動到下一行。如果下一行有數(shù)據(jù)芜繁,返回true旺隙,如果沒有下一行數(shù)據(jù),返回false骏令。

getXXX(列索引|列字段名稱):獲取字段的數(shù)據(jù)

i"=??)


第一種連接操作數(shù)據(jù)庫的方法 ? ? ? 存在sql注入的風險

第一步: 加載驅(qū)動

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

第二部:創(chuàng)建鏈接數(shù)據(jù)庫

Connection conn=driverManger.getConnection(url,user,password);

第三部:創(chuàng)建Statement對象

Statement statement=conn.createStatement();

第四步:創(chuàng)建Sql語句

String sql="sql語句";

第五步:執(zhí)行sql語句

如果上面的sql語句是DDL. DML語句 ? 就使用如下代碼:

statement.executeUpdate(sql); ? 可以用int類型去接受


如果上面的sql語句是DQL語句,,就是用如下代碼:

statement.executeQuery(sql); ? 可以用int類型區(qū)接受

第六步: ?關(guān)閉 ?

調(diào)用close方法 ? ? ? ?conn ? ? ? ? statement

if(conn!=null){conn.close()} ? ?statement和conn 一樣


第二種方法 ? 是用Statement的子接口 ? PreparedStatement ? 不會存在sql注入風險

第一步: 加載驅(qū)動

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

第二步:創(chuàng)建鏈接數(shù)據(jù)庫

Connection conn=driverManger.getConnection(url,user,password);

第三步:創(chuàng)建sql語句

第四步:創(chuàng)建Preparedstatement對象

Preparedstatement pstat=conn.preparedstatement(sql);

執(zhí)行DDL,DML語句代碼如下

ResultSet rs=pstat.executeupdate(); ? ? Result是個集合 ? ?

執(zhí)行DQL語句代碼如下

ResultSet rs=pstat.executeQuery();

第五步:關(guān)閉

ResultSet也需要關(guān)閉

conn ? ?pstat ? ? ?rs ?三個都要關(guān)閉

statement 和 Preparedstatement的區(qū)別:

1...語法不同 ??

? statement:執(zhí)行的事靜態(tài)sql語句

Preparedstatement:先執(zhí)行預(yù)編譯SQL語句: 可以用 ? 進行參數(shù)占位 ?后面給參數(shù)賦值

? ? 比如1: ? ? ?String sql="select * from user where uid=?;";

? ? ? ? ? ? ? ? ? ? ?pstat.setInt(1,值);

? ? ? ? ? ? ? ? ? ? int是根據(jù)sql語句 列字段(Uid)的類型, ? 1是第幾個? ? ?值是填?的 ?

? ? 比如2: ? ? ? ? String sql ="INSERT INTO student(NAME,gender)

VALUES(?,?)";//預(yù)編譯sql:使用蔬捷?號代替參數(shù)值。一個?號代表一個參數(shù)值

2...原理不同

statement:不能進行緩存

Preparedstatement:可以進行緩存,執(zhí)行效率比statement快

3...安全問題

statement:不能防止sql注入

Preparedstatement:可以防止sql注入

JDBC的批處理:

Statement批處理:

? ? ? ? ? ? ? ? ? ? ?void ? ? ?addBatch(String sql)添加sql到緩存區(qū)(暫時不發(fā)送)

? ? ? ? ? ? ? ? ? ? ?int[] ? ? ?executeBatch()執(zhí)行批處理命令周拐。發(fā)送所有緩存區(qū)的sql

? ? ? ? ? ? ? ? ? ? ? void ? ? ? clearBatch()清空sql緩存區(qū)

PreparedStatement批處理:

? ? ? ? ? ? ? ? ? void ? ? addBatch()添加參數(shù)到緩存區(qū)

? ? ? ? ? ? ? ? ?int[] ? ? ?executeBatch()執(zhí)行批處理命令铡俐。發(fā)送所有緩存區(qū)的sql

? ? ? ? ? ? ? ? void ? ? ?clearBatch()清空sql緩存區(qū)

Mysql不支持批處理優(yōu)化,也不支持PreparedStatement對象優(yōu)化

Oracle支持批處理優(yōu)化妥粟,支持PreparedStatement對象優(yōu)化审丘。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市勾给,隨后出現(xiàn)的幾起案子滩报,更是在濱河造成了極大的恐慌,老刑警劉巖播急,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脓钾,死亡現(xiàn)場離奇詭異,居然都是意外死亡桩警,警方通過查閱死者的電腦和手機可训,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來生真,“玉大人沉噩,你說我怎么就攤上這事≈埃” “怎么了川蒙?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長长已。 經(jīng)常有香客問我畜眨,道長,這世上最難降的妖魔是什么术瓮? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任康聂,我火速辦了婚禮,結(jié)果婚禮上胞四,老公的妹妹穿的比我還像新娘恬汁。我一直安慰自己,他們只是感情好辜伟,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布氓侧。 她就那樣靜靜地躺著,像睡著了一般导狡。 火紅的嫁衣襯著肌膚如雪约巷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天旱捧,我揣著相機與錄音独郎,去河邊找鬼踩麦。 笑死,一個胖子當著我的面吹牛氓癌,可吹牛的內(nèi)容都是我干的谓谦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼顽铸,長吁一口氣:“原來是場噩夢啊……” “哼茁计!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谓松,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎践剂,沒想到半個月后鬼譬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡逊脯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年优质,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片军洼。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡巩螃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匕争,到底是詐尸還是另有隱情避乏,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布甘桑,位于F島的核電站拍皮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏跑杭。R本人自食惡果不足惜铆帽,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望德谅。 院中可真熱鬧爹橱,春花似錦、人聲如沸窄做。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浸策。三九已至冯键,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間庸汗,已是汗流浹背惫确。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人改化。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓掩蛤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親陈肛。 傳聞我的和親對象是個殘疾皇子揍鸟,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

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

  • JDBC簡介 SUN公司為了簡化、統(tǒng)一對數(shù)據(jù)庫的操作句旱,定義了一套Java操作數(shù)據(jù)庫的規(guī)范阳藻,稱之為JDBC。JDBC...
    奮斗的老王閱讀 1,518評論 0 51
  • JDBC概述 在Java中谈撒,數(shù)據(jù)庫存取技術(shù)可分為如下幾類:JDBC直接訪問數(shù)據(jù)庫腥泥、JDO技術(shù)、第三方O/R工具啃匿,如...
    usopp閱讀 3,537評論 3 75
  • 本人的環(huán)境為Myeclipse10蛔外、MySQL5.7.15 本文包括:簡介JDBC編程步驟打通數(shù)據(jù)庫程序詳解—Dr...
    廖少少閱讀 3,946評論 7 39
  • java類和數(shù)據(jù)庫表的關(guān)系 類對應(yīng)表,字段對應(yīng)屬性溯乒,一行數(shù)據(jù)對應(yīng)一個對象夹厌,所以類的屬性名要和表的字段名相同才能進行...
    孫浩j閱讀 556評論 0 1
  • 周二大盤在受到元旦假期期間的重多利好消息影響之下,如中國央行公布的一系列數(shù)據(jù)和指標裆悄,均利好于股市矛纹、匯市,致使昨天早...
    融河直播閱讀 156評論 0 0