jdbc 學習筆記(三)
三、幾個重要介面:
(1) statement —— sql語句執行介面
statement介面代表了乙個資料庫的狀態,在向資料庫傳送相應的sql語句時,都需要建立statement介面或者preparedstatement介面。在具體應用中,statement主要用於操作不帶引數(可以直接執行)的sql語句,比如刪除語句、新增或更新。
(2) preparedstatement:預編譯的statement
第一步:通過連線獲得preparedstatement物件,用帶佔位符(?)的sql語句構造。
preparedstatement pstm = con.preparedstatement(「select * from test where id=?」);
第二步:設定引數
pstm.setstring(1,「ganbin」);
第三步:執行sql語句
rs = pstm.excutequery();
statement傳送完整的sql語句到資料庫不是直接執行而是由資料庫先編譯,再執行。而preparedstatement是先傳送帶引數的sql語句,再傳送一組引數值。如果是同構的sql語句,preparedstatement的效率要比statement高。而對於異構的sql則兩者效率差不多。
同構:兩個sql語句可編譯部分是相同的,只有引數值不同。
異構:整個sql語句的格式是不同的
注意點:1、使用預編譯的statement編譯多條sql語句一次執行
2、可以跨資料庫使用,編寫通用程式
3、能用預編譯時盡量用預編譯
(3) resultset —— 結果集操作介面
resultset介面是查詢結果集介面,它對返回的結果集進行處理。resultset是程式設計師進行jdbc操作的必需介面。
(4) resultsetmetadata —— 元資料操作介面
resultsetmetadata是對元資料進行操作的介面,可以實現很多高階功能。hibernate執行資料庫的操作,大部分都是通過此介面。可以認為,此介面是sql查詢語言的一種反射機制。resultsetmetadata介面可以通過陣列的形式,遍歷資料庫的各個欄位的屬性,對於我們開發者來說,此機制的意義重大。
jdbc通過元資料(metadata)來獲得具體的表的相關資訊,例如,可以查詢資料庫中有哪些表,表有哪些字段,以及欄位的屬性等。metadata中通過一系列get***將這些資訊返回給我們。
資料庫元資料 database metadata 使用connection.getmetadata()獲得
metadata包括: 包含了關於資料庫整體元資料資訊。
結果集元資料 result set metadata 使用resultset.getmetadata()獲得
比較重要的是獲得表的列名、列數等資訊。
結果集元資料物件:resultsetmetadata meta = rs.getmetadata();
ü 字段個數:meta.getcolomncount();
ü 欄位名字:meta.getcolumnname();
ü 欄位jdbc型別:meta.getcolumntype();
ü 字段資料庫型別:meta.getcolumntypename();
資料庫元資料物件:databasemetadata dbmd = con.getmetadata();
資料庫名=dbmd.getdatabaseproductname();
資料庫版本號=dbmd.getdatabaseproductversion();
資料庫驅動名=dbmd.getdrivername();
資料庫驅動版本號=dbmd.getdriverversion();
資料庫url=dbmd.geturl();
該連線的登陸名=dbmd.getusername();
四、jdbc異常處理:
jdbc中,和異常相關的兩個類是sqlexception和sqlwarning。
1. sqlexception類:用來處理較為嚴重的異常情況。
比如:① 傳輸的sql語句語法的錯誤;
② jdbc程式連線斷開;
③ sql語句中使用了錯誤的函式。
sqlexception提供以下方法:
geterrorcode() —— 用來返回代表異常的整數** (error code);
getmessage() —— 用來返回異常的描述資訊 (error message)。
2. sqlwarning類:用來處理不太嚴重的異常情況,也就是一些警告性的異常。其提供的方法和使用與sqlexception基本相似。
結合異常的兩種處理方式,明確何時採用哪種。
a. throws 處理不了,或者要讓呼叫者知道,就throws;
b. try … catch 能自行處理,就進行異常處理。
jdbc學習筆記 三
一.事務 transaction 原子操作 不可再分的操作,乙個操作不能再分成比它更細小的操作.事務是針對原子操作的,要求原子操作不可再分,並且必須同時成功同時失敗。事務就是把一些非原子操作,變成原子操作,由應用伺服器來提出要求,由資料庫伺服器來執行操作.在jdbc中預設是自動提交的,如果要想使用事...
jdbc學習筆記 三
一.事務 transaction 原子操作 不可再分的操作,乙個操作不能再分成比它更細小的操作.事務是針對原子操作的,要求原子操作不可再分,並且必須同時成功同時失敗。事務就是把一些非原子操作,變成原子操作,由應用伺服器來提出要求,由資料庫伺服器來執行操作.在jdbc中預設是自動提交的,如果要想使用事...
JDBC學習筆記
size medium color red 本節jdbc的操作學習大致分為 color size size medium color red list 資料庫的裝載和連線 資料庫的增刪改查 資料庫的預編譯 資料庫的事務管理 list color size 下面直接上 了,還是 比較實在 以mysql...