03-JDBC学习手册:JDBC中几个重要接口和异常处理
一、JDBC中幾個(gè)重要接口
1 ?Statement
——— SQL ?語(yǔ)句執(zhí)行接口Statement 接口代表了一個(gè)數(shù)據(jù)庫(kù)的狀態(tài),在向數(shù)據(jù)庫(kù)發(fā)送相應(yīng)的 SQL 語(yǔ)句 時(shí),都需要?jiǎng)?chuàng)建 Statement 接口或 者PreparedStatement 接口。在具體應(yīng)用中, Statement 主要用于操作不帶參數(shù)(可以直接運(yùn)行)的 SQL 語(yǔ)句,比如刪除語(yǔ)句、 添加或更新。
擴(kuò)展:如何進(jìn)行模糊查詢?
----關(guān)鍵點(diǎn):如何根據(jù)條件拼接 SQL 語(yǔ)句。
2 ?PreparedStatement
——— ?預(yù)編譯的 Statement第一步:通過(guò)連接獲得 PreparedStatement 對(duì)象,用帶占位符(?)的 sql 語(yǔ)句構(gòu)造。
PreparedStatement pstm = con.preparedStatement(“select * from test where id=?”);
第二步:設(shè)置參數(shù)
pstm.setString(1,“ganbin”);
第三步:執(zhí)行 sql 語(yǔ)句
Rs = pstm.excuteQuery();
statement 發(fā)送完整的 Sql 語(yǔ)句到數(shù)據(jù)庫(kù)不是直接執(zhí)行而是由數(shù)據(jù)庫(kù)先編譯,再運(yùn)行。而 PreparedStatement 是先發(fā)送帶參數(shù)的 Sql 語(yǔ)句,再發(fā)送一組參數(shù)值。如果是同構(gòu)的 sql語(yǔ)句,PreparedStatement 的效率要比 statement 高。而對(duì)于異構(gòu)的 sql 則兩者效率差不多。
同構(gòu):兩個(gè) Sql 語(yǔ)句可編譯部分是相同的,只有參數(shù)值不同。
異構(gòu):整個(gè) sql 語(yǔ)句的格式是不同的
注意點(diǎn):
1、使用預(yù)編譯的 Statement 編譯多條 Sql 語(yǔ)句一次執(zhí)行
2、可以跨數(shù)據(jù)庫(kù)使用,編寫通用程序
3、能用預(yù)編譯時(shí)盡量用預(yù)編譯
3 ?ResultSet
—— 結(jié)果集操作接口ResultSet 接口是查詢結(jié)果集接口,它對(duì)返回的結(jié)果集進(jìn)行處理。ResultSet 是程序員進(jìn)行 JDBC 操作的必需接口。
4 ?ResultSetMetaData
—— 元數(shù)據(jù)操作接口ResultSetMetaData 是對(duì)元數(shù)據(jù)進(jìn)行操作的接口,可以實(shí)現(xiàn)很多高級(jí)功能。Hibernate 運(yùn)行數(shù)據(jù)庫(kù)的操作,大部分都是通過(guò)此接口。可以認(rèn)為,此接口是 SQL 查詢語(yǔ)言的一種反射機(jī)制。 ResultSetMetaData 接口可以通過(guò)數(shù)組的形式,遍歷數(shù)據(jù)庫(kù)的各個(gè)字段的屬性,對(duì)于我們開發(fā) 者來(lái)說(shuō),此機(jī)制的意義重大。
JDBC 通過(guò)元數(shù)據(jù)(MetaData)來(lái)獲得具體的表的相關(guān)信息,例如,可以查詢數(shù)據(jù)庫(kù)中有哪些表,表有哪些字段,以及字段的屬性等。MetaData 中通過(guò)一系列 getXXX 將這些信息返回給我們。
結(jié)果集元數(shù)據(jù)對(duì)象:ResultSetMetaData meta = rs.getMetaData();
- ? 字段個(gè)數(shù):meta.getColomnCount();
- ? 字段名字:meta.getColumnName();
- ? 字段 JDBC 類型:meta.getColumnType();
- ? 字段數(shù)據(jù)庫(kù)類型:meta.getColumnTypeName();
數(shù)據(jù)庫(kù)名=dbmd.getDatabaseProductName();
數(shù)據(jù)庫(kù)版本號(hào)=dbmd.getDatabaseProductVersion();
數(shù)據(jù)庫(kù)驅(qū)動(dòng)名=dbmd.getDriverName();
數(shù)據(jù)庫(kù)驅(qū)動(dòng)版本號(hào)=dbmd.getDriverVersion();
數(shù)據(jù)庫(kù) Url=dbmd.getURL();
該連接的登陸名=dbmd.getUserName()
二、JDBC異常處理
JDBC 中,和異常相關(guān)的兩個(gè)類是 SQLException 和 SQLWarning。1. SQLException 類:用來(lái)處理較為嚴(yán)重的異常情況。
比如:① 傳輸?shù)?SQL 語(yǔ)句語(yǔ)法的錯(cuò)誤; ? ?② JDBC 程序連接斷開;
? ?③ SQL 語(yǔ)句中使用了錯(cuò)誤的函數(shù)。
SQLException 提供以下方法:
getNextException() —— 用來(lái)返回異常棧中的下一個(gè)相關(guān)異常;
getErrorCode() —— 用來(lái)返回代表異常的整數(shù)代碼 (error code);
getMessage() —— 用來(lái)返回異常的描述信息 (error message)。
2. SQLWarning 類:用來(lái)處理不太嚴(yán)重的異常情況,也就是一些警告性的異常。其提供的方法和使用與 SQLException 基本相似。
結(jié)合異常的兩種處理方式,明確何時(shí)采用哪種。
A. throws 處理不了,或者要讓調(diào)用者知道,就 throws;
B. try … catch 能自行處理,就進(jìn)行異常處理。
總結(jié)
以上是生活随笔為你收集整理的03-JDBC学习手册:JDBC中几个重要接口和异常处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 02-JDBC学习手册:JDBC编程步骤
- 下一篇: 05-JDBC学习手册:JDBC2.0