日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

03-JDBC学习手册:JDBC中几个重要接口和异常处理

發(fā)布時(shí)間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03-JDBC学习手册:JDBC中几个重要接口和异常处理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、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ù)元數(shù)據(jù)對(duì)象:DatabaseMetaData dbmd = con.getMetaData();
數(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。