JDBC-連接數(shù)據(jù)庫原理

整體的邏輯結(jié)構(gòu)

????導包

????加載數(shù)據(jù)庫驅(qū)動Driver

????獲得連接

????獲取Statement對象(直接對數(shù)據(jù)數(shù)據(jù)進行操作)

? ? ????增刪改

? ? ????查

????????????獲取結(jié)果集rs

????????????得到元數(shù)據(jù)

????????????獲取標簽的個數(shù)和名稱

????????????獲取屬性值

????????????創(chuàng)建對象數(shù)組芍锦,并使用反射存儲結(jié)果

????關(guān)閉re,statement,connection等對象


獲得連接對象connection的五種方法

? ? ? ? 1.使用jar包中的Driver類直接創(chuàng)建Driver對象

? ? ? ? 2.使用Class.forName(className)獲取Driver的Class對象

? ? ? ? 3.使用2.的方法獲取Driver對象后头遭,使用DriverManager來創(chuàng)建連接

? ? ? ? 4.省略3.中的中間步驟豹爹,兩句搞定:Class.forName(driverName);

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

? ? ? ? 5.在4.的基礎(chǔ)上,將配置信息封裝在文件中,實現(xiàn)數(shù)據(jù)和代碼的分離,使用Properties/load(inputstream)來讀取文件,并進行賦值

最終實現(xiàn)連接的方式

????????(方式5)數(shù)據(jù)庫配置+操作 封裝成類JDBCUtils,之后直接使用該類的靜態(tài)方法來獲取連接對象

Statement所帶來的注入問題

? ? ? ? 通過傳入特殊參數(shù)园匹,實現(xiàn)語句查詢永遠成功,例如:

????????SELECT user,password FROM user_table WHERE user = '1' or ' AND password = '=1 or '1' = '1'劫灶;

子類PrepareStatement解決注入(使用方法)

????使用子類PrepareStatement, 解決注入問題裸违,并實現(xiàn)高效的批量操作

????????1.使用connection對象,傳入sql語句本昏,來創(chuàng)建:? ?ps = conn.prepareStatement(sql);

????????2. 立馬填充值供汛,使用setObject() , 解釋了問什么傳入的參數(shù)args 是Object:? ps.setObject(i + 1, args[i]);

????????3. 執(zhí)行,返回值rs (結(jié)果集)

????????4.元數(shù)據(jù)

????????5.列數(shù)

????????6.re.next

????????????7.創(chuàng)建存儲對象

????????????8.給對象屬性賦值(根據(jù)列數(shù)來for循環(huán))

? ? ? ? ? ????? 9.? 獲取re所指行的屬性值

? ? ? ? ? ? ? ?10. 獲取該屬性對應的標簽名 (getcolumnLable())

? ? ? ? ? ? ? ?11. 利用反射給對象的該屬性賦值

????????????????????1.getDeclaredField(標簽名)

????????????????????2.設(shè)置可修改

? ? ? ? ? ? ? ? ? ? 3.field.set(p, 值)

? ? ? ? ? ? 12. 集合添加對象

? ? ? ? 13.返回集合? ? ? ? ? ??


反射存儲結(jié)果時,出現(xiàn)標簽名稱和類屬性名稱不一致的問題

????????———— 在sql語句給標簽重命名怔昨,并將getcolumnName() 換成 getcolumnLable()方法

通用sql增刪改查 對象的注意點

????????查的數(shù)據(jù)可能多條雀久,需要使用集合來存儲

????????每一條數(shù)據(jù)對應一個對象

????????傳入?yún)?shù): sql語句,查詢數(shù)據(jù)對應的對象趁舀,以及sql語句中“赖捌?” 的填充值

????????String sql, class.Class, Object ...args;?

使用泛型來存儲不同數(shù)據(jù)對應的類的對象

????????public <T>? List<T>? getForList(Class<T> clazz,String sql, Object... args){}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市矮烹,隨后出現(xiàn)的幾起案子越庇,更是在濱河造成了極大的恐慌,老刑警劉巖奉狈,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卤唉,死亡現(xiàn)場離奇詭異,居然都是意外死亡仁期,警方通過查閱死者的電腦和手機桑驱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跛蛋,“玉大人熬的,你說我怎么就攤上這事∥史遥” “怎么了悦析?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵寿桨,是天一觀的道長此衅。 經(jīng)常有香客問我,道長亭螟,這世上最難降的妖魔是什么挡鞍? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮预烙,結(jié)果婚禮上墨微,老公的妹妹穿的比我還像新娘。我一直安慰自己扁掸,他們只是感情好翘县,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谴分,像睡著了一般锈麸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牺蹄,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天忘伞,我揣著相機與錄音,去河邊找鬼。 笑死氓奈,一個胖子當著我的面吹牛翘魄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舀奶,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼暑竟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了育勺?” 一聲冷哼從身側(cè)響起光羞,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怀大,沒想到半個月后纱兑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡化借,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年潜慎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓖康。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡铐炫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒜焊,到底是詐尸還是另有隱情倒信,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布泳梆,位于F島的核電站鳖悠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏优妙。R本人自食惡果不足惜乘综,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望套硼。 院中可真熱鬧卡辰,春花似錦、人聲如沸邪意。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雾鬼。三九已至萌朱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呆贿,已是汗流浹背嚷兔。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工森渐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人冒晰。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓同衣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親壶运。 傳聞我的和親對象是個殘疾皇子耐齐,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

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