資源描述:
《JDBC訪問(wèn)數(shù)據(jù)庫(kù)課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第2章 JDBC訪問(wèn)數(shù)據(jù)庫(kù)2010-03-01主要內(nèi)容§1JDBC簡(jiǎn)介§2 基本的JDBC應(yīng)用§3 元數(shù)據(jù)§4 參數(shù)化數(shù)據(jù)庫(kù)查詢和數(shù)據(jù)庫(kù)更新§5 調(diào)用存儲(chǔ)過(guò)程§1 JDBC簡(jiǎn)介JDBC(JavaDatabaseConnectivity)是Sun公司定義的數(shù)據(jù)庫(kù)連接應(yīng)用編程接口。JDBC訪問(wèn)數(shù)據(jù)庫(kù)使用結(jié)構(gòu)化查詢語(yǔ)言SQL。1.1 SQL語(yǔ)言回顧查詢:select更新:insert、update、delete、create例:以SQLServer為服務(wù)器,查詢Pubs數(shù)據(jù)庫(kù)中出版社信息。1.2 JDBC的特點(diǎn)一致API(獨(dú)立于各種DBMS)簡(jiǎn)潔性健壯性1
2、.3 JDBC的構(gòu)成1、JDBC驅(qū)動(dòng)程序管理器裝載特定數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序初始化、管理驅(qū)動(dòng)2、驅(qū)動(dòng)程序任務(wù)建立連接、發(fā)送數(shù)據(jù)請(qǐng)求、結(jié)果集和事務(wù)處理、錯(cuò)誤信息處理等分類(lèi)JDBC驅(qū)動(dòng)分類(lèi)JDBC-ODBC橋:通過(guò)Microsoft的ODBC訪問(wèn)數(shù)據(jù)庫(kù)。這是Java核心類(lèi)提供的惟一的JDBC驅(qū)動(dòng)(即第I類(lèi)驅(qū)動(dòng)),該驅(qū)動(dòng)的Java類(lèi)名為:sun.jdbc.odbc.JdbcOdbcDriver。JDBC-Native橋:通過(guò)DBMS提供的驅(qū)動(dòng)程序訪問(wèn)。DBMS必須有支持JDBC連接的JAVA驅(qū)動(dòng)。JDBC-Network橋:采用中間服務(wù)器作為協(xié)議轉(zhuǎn)換器,將JDB
3、C的請(qǐng)求格式轉(zhuǎn)化為目標(biāo)DBMS的請(qǐng)求格式。純JDBC驅(qū)動(dòng):JDBC驅(qū)動(dòng)直接與數(shù)據(jù)庫(kù)進(jìn)行通信(套接字)。3、數(shù)據(jù)源ODBC設(shè)置與訪問(wèn)jdbc:odbc:XXXX其他數(shù)據(jù)源常用數(shù)據(jù)庫(kù)JDBC連接寫(xiě)法大全.mht4、JDBC應(yīng)用程序下一小節(jié)介紹JDBC四種組件之間的關(guān)系1.4 JDBCAPI概述JDBC提供兩種編程接口:面向數(shù)據(jù)庫(kù)開(kāi)發(fā)人員的接口;面向JDBC驅(qū)動(dòng)程序開(kāi)發(fā)的接口。面向數(shù)據(jù)庫(kù)開(kāi)發(fā)人員的接口java.sql.DriverManager:加載驅(qū)動(dòng)、建立連接java.sql.Connection:數(shù)據(jù)庫(kù)連接java.sql.Statement:處理連
4、接中的SQL語(yǔ)句java.sql.ResultSet:處理結(jié)果集面向JDBC驅(qū)動(dòng)開(kāi)發(fā)的接口java.sql.Driver:一般由JDBC生產(chǎn)廠商提供?!? 基本的JDBC應(yīng)用2.1 JDBC編程一般步驟1、裝載驅(qū)動(dòng)2、建立連接(Connection)3、查詢準(zhǔn)備(Statement)4、執(zhí)行查詢或更新5、處理結(jié)果(ResultSet)6、關(guān)閉查詢及連接2.2 JDBC編程舉例例:以SQLServer為服務(wù)器,查詢Pubs數(shù)據(jù)庫(kù)中出版社信息。參考:JDBC_1.rarDriverManagergetConnection(StringconnStr);創(chuàng)
5、建數(shù)據(jù)庫(kù)連接,連接前必須裝載相應(yīng)的驅(qū)動(dòng)Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);拋出ClassNotFoundException異常拋出SQLException異常ConnectioncreateStatement();打開(kāi)一個(gè)查詢窗口prepareStatement(StringpreStr);打開(kāi)一個(gè)帶參數(shù)的查詢窗口prepareCall(Stringcs);準(zhǔn)備調(diào)用存儲(chǔ)過(guò)程close();關(guān)閉連接StatementResultSetexecuteQuery(Stringsql);執(zhí)行返回結(jié)果集的
6、查詢SQLintexecuteUpdate(Stringsql);執(zhí)行返回影響行數(shù)的更新SQLResultSetXXXgetXXX(intcol);獲取第col列的值,以XXX類(lèi)型返回,XXX可以是Int、String、Double、Date等booleannext();移動(dòng)到結(jié)果集的下一行結(jié)果集實(shí)際上是用光標(biāo)指示的,每次光標(biāo)只指向一條記錄,且光標(biāo)只能向后移動(dòng),不能向前移!最初光標(biāo)停在-1位置,調(diào)用一次next往后加1關(guān)閉按照從ResultSet?Statement?Connection的順序關(guān)閉,否則會(huì)出現(xiàn)異常!ResultSet若依然有數(shù)據(jù)遺留,
7、則該ResultSet是激活的;調(diào)用close()方法可以關(guān)閉結(jié)果集,而當(dāng)調(diào)用next()方法到達(dá)最后一行(返回值為false)時(shí),結(jié)果集會(huì)自動(dòng)關(guān)閉!一個(gè)Statement可以有多個(gè)ResultSet,但不能同時(shí)打開(kāi)多個(gè)激活態(tài)的ResultSet,Statement只保留最后一個(gè)結(jié)果集!一個(gè)Connection可以有多個(gè)Statement,但每個(gè)時(shí)刻只能有一個(gè)Statement執(zhí)行查詢或更新SQL!使用后最好關(guān)閉Connection連接,否則將占用過(guò)多網(wǎng)絡(luò)資源(當(dāng)然在連接池中可以不用關(guān)閉)!課堂練習(xí)練習(xí)1:連接SQLServer的Pubs數(shù)據(jù)庫(kù),打印
8、輸出作者ID號(hào)、作者名字和電話。提示:操作authors表!練習(xí)2:連接SQLServer的Pubs數(shù)據(jù)庫(kù),