




已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫(kù)訪(fǎng)問(wèn),夏汛,瀘職院信息工程系,學(xué)習(xí)目標(biāo),能夠使用JDBC訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),JDBC驅(qū)動(dòng)程序的類(lèi)型,JDBC-ODBC橋(訪(fǎng)問(wèn)access,只能通過(guò)JDBC-ODBC橋)部分本地API,部分Java驅(qū)動(dòng)程序JDBC網(wǎng)絡(luò)純Java驅(qū)動(dòng)程序本地協(xié)議純Java驅(qū)動(dòng)程序,下載安裝Mysql,下載和使用MysqlJDBC驅(qū)動(dòng),JDBCAPI,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的代碼:Class.forName(com.mysql.jdbc.Driver);Connectionconn=DriverManager.getConnection(“jdbc:mysql:/localhost:3306/DB,root,123);Statementstmt=conn.createStatment();ResultSetrs=stmt.executeQuery(select*fromemp),JDBCAPI-加載與注冊(cè)JDBC驅(qū)動(dòng),1.Driver接口java.sql.Driver是所有JDBC驅(qū)動(dòng)程序需要實(shí)現(xiàn)的接口,這個(gè)接口主要是提供給數(shù)據(jù)庫(kù)廠商使用,不同廠商該接口的類(lèi)名是不同的。com.microsoft.jdbc.sqlserver.SQLServerDriversql2000的驅(qū)動(dòng)類(lèi)名com.microsoft.sqlserver.SQLServerDriversql2005的驅(qū)動(dòng)類(lèi)名oracle.jdbc.driver.OracleDriverOracle的JDBC驅(qū)動(dòng)類(lèi)名com.mysql.jdbc.Drivermysql的驅(qū)動(dòng)類(lèi)名Driver接口中提供了一個(gè)Connect()方法,用來(lái)建立到數(shù)據(jù)庫(kù)的連接Connectionconnect(Stringurl,propertiesinfo)throwsSQLException,JDBCAPI-加載與注冊(cè)JDBC驅(qū)動(dòng),2.加載與注冊(cè)JDBC驅(qū)動(dòng)加載JDBC驅(qū)動(dòng)是調(diào)用Class類(lèi)的靜態(tài)方法forName(),向其傳遞要加載的JDBC驅(qū)動(dòng)的類(lèi)名。DriverManager類(lèi)是驅(qū)動(dòng)程序管理類(lèi),負(fù)責(zé)管理驅(qū)動(dòng)程序,這個(gè)類(lèi)中所有方法都是靜態(tài)的,在DriverManager類(lèi)中提供了registerDriver()方法來(lái)注冊(cè)驅(qū)動(dòng)程序類(lèi)的實(shí)例。publicstaticvoidregisterDriver(Driverdriver)throwsSQLException通常不需要親自去調(diào)用registerDriver()方法來(lái)注冊(cè)驅(qū)動(dòng)程序類(lèi)的實(shí)例,因?yàn)閷?shí)現(xiàn)Driver接口的驅(qū)動(dòng)程序類(lèi)都包含了靜態(tài)代碼塊,在這個(gè)靜態(tài)代碼塊中,會(huì)調(diào)用DriverManager.registerDriver()方法來(lái)注冊(cè)自身的一個(gè)實(shí)例。,JDBCAPI-建立到數(shù)據(jù)庫(kù)的連接,3.建立到數(shù)據(jù)庫(kù)的連接在DriverManger類(lèi)中提供了3個(gè)重載的getConnection()方法PublicstaticConnectiongetConnection(Stringurl)throwsSQLExceptionPublicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLExceptionPublicstaticConnectiongetConnection(Stringurl,Propertiesinfo)throwsSQLExceptionMysql的URL:jdbc:mysql:/localhost:3306/databasename,JDBCAPI-訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),1.StaementStaementcreateStaement()throwsSQLException該方法創(chuàng)建一個(gè)Staement對(duì)象,用于向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句,沒(méi)有參數(shù)的SQL語(yǔ)句通常用Statement對(duì)象來(lái)執(zhí)行Staement中定義了下列方法用于執(zhí)行SQL語(yǔ)句ResultSetexeCuteQuery(Stringsql)throwsSQLException該方法執(zhí)行參數(shù)sql指定的sql語(yǔ)句,返回一個(gè)ResultSet對(duì)象,ResultSet用于查看執(zhí)行結(jié)果。intexecuteUpdate(Stringsql)throwsSQLException該方法執(zhí)行參數(shù)sql指定的INSERT、UPDATE或者DELETE語(yǔ)句,也可執(zhí)行SQLDDL語(yǔ)句,如CREATETABLEbooleanexecute(Stringsql)throwsSQLException該方法執(zhí)行返回多個(gè)結(jié)果集的SQL語(yǔ)句intexecuteBatch()throwsSQLException該方法允許我們向數(shù)據(jù)庫(kù)提交一批命令,然后一起執(zhí)行。大量SQL語(yǔ)句的批量執(zhí)行可以顯著提高性能。如果所有命令都成功執(zhí)行,返回值是一個(gè)更新行數(shù)的數(shù)組。數(shù)組中每一個(gè)int元素是按照加入命令的先后順序來(lái)存儲(chǔ)的,表示了相應(yīng)命令的更新行數(shù)??梢允褂胊ddBatch()方法將SQL命令加入到命令列表中。,JDBCAPI-訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),2.ResultSetResultSet接口由數(shù)據(jù)庫(kù)廠商實(shí)現(xiàn),ResultSet對(duì)象維護(hù)了一個(gè)指向當(dāng)前數(shù)據(jù)行的游標(biāo),初始的時(shí)候,游標(biāo)在第一行之前,可以通過(guò)ResultSet對(duì)象的next()方法移動(dòng)游標(biāo)到下一行。booleannext()throwsSQLExceptionResultSet接口中定義了很多方法來(lái)獲取當(dāng)前行中的數(shù)據(jù),根據(jù)字段類(lèi)型的不同用不同的方法來(lái)獲取數(shù)據(jù)。方法略每種方法,又提供了兩種形式的調(diào)用,一種是以列的索引作為參數(shù)(索引從1開(kāi)始),一種是以列的名字作為參數(shù)。如果不知道要獲取的列數(shù)據(jù)類(lèi)型,可以一律采用getString()方法來(lái)得到String類(lèi)型的數(shù)據(jù),JDBCAPI-訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),3.PreparedStatement在程序中傳遞的SQL語(yǔ)句在執(zhí)行前必須被預(yù)編譯,包括語(yǔ)句分析、代碼優(yōu)化等,然后才能被數(shù)據(jù)庫(kù)引擎執(zhí)行。如果重復(fù)執(zhí)行只有參數(shù)不同的SQL語(yǔ)句,是比較低效的。如果要用不同的參數(shù)來(lái)多次執(zhí)行同一個(gè)SQL語(yǔ)句,可以使用PreparedStatement的對(duì)象。PreparedStatementpstmt=conn.preparedStatement(“insertemployeevalues(?,?,?)”);pstmt.setInt(1,1);pstmt.setString(2,”zhangsan”);pstmt.setDate(3,java.sql.Date.valueof(“2011-2-25”);pstmt.executeUpdate();,可滾動(dòng)結(jié)果集,之前通過(guò)Statement對(duì)象所創(chuàng)建的結(jié)果集只能向前滾動(dòng),即只能調(diào)用next()方法向前得到數(shù)據(jù)行,無(wú)法向后滾動(dòng)。如果要獲得一個(gè)可滾動(dòng)的結(jié)果集,需要在創(chuàng)建Statement或PreparedStatement對(duì)象時(shí),調(diào)用Connection對(duì)象的另一個(gè)重載的createStatement()方法:Statementstmt=conn.createStatement(type,concurrency);PreparedStatementpstmt=conn.preparedStatement(type,concurrency);其中type可取:ResultSet.TYPE_FORWARD_ONLY:結(jié)果集不能滾動(dòng)ResultSet.TYPE_SCROLL_INSENSITIVE:結(jié)果集可以滾動(dòng),但是對(duì)數(shù)據(jù)庫(kù)變化不敏感,數(shù)據(jù)庫(kù)查詢(xún)生成結(jié)果集后發(fā)生了變化,結(jié)果集不發(fā)生變化。ResultSet.TYPE_SCROLL_SENSITIVE:結(jié)果集可以滾動(dòng),但是對(duì)數(shù)據(jù)庫(kù)變化敏感。例如通過(guò)查詢(xún)返回了10行數(shù)據(jù),如果另一個(gè)程序刪除了其中的2行,那么這個(gè)結(jié)果集中就只有8行了,Concurrency可?。篟esultSet.CONCUR_READ_ONLY結(jié)果集不能用于更新數(shù)據(jù)庫(kù)ResultSet.CONCUR_UPDATABLE結(jié)果集可以用于更新數(shù)據(jù)庫(kù),ResultSet接口為可滾動(dòng)結(jié)果集提供的方法,booleanisBeforeFirst()throwsSQLExceptionbooleanisAfterLast()throwsSQLExceptionbooleanisFirst()throwsSQLExceptionbooleanisLast()throwsSQLException以上4種方法分別用于判斷游標(biāo)是否位于第一行之前、最后一行之后、第一行和最后一行,voidbeforeFirst()throwsSQLException該方法移動(dòng)游標(biāo)到結(jié)果集第一行之前voidafterLast()throwsSQLException該方法移動(dòng)游標(biāo)到結(jié)果集最后一行之后booleanfirst()throwsSQLException該方法移動(dòng)游標(biāo)到結(jié)果集的第一行b
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 重癥肺炎患者問(wèn)診要點(diǎn)與流程
- 沙水區(qū)游戲價(jià)值培訓(xùn)
- IABP最常見(jiàn)的并發(fā)癥及臨床管理
- 二甲復(fù)評(píng)消防安全培訓(xùn)
- 煤礦工作總結(jié)概述
- 學(xué)生生存教育體系構(gòu)建
- 綠城社區(qū)工作總結(jié)
- 家政服務(wù)崗前培訓(xùn)
- 愛(ài)眼護(hù)理操作流程
- 癌癥病人的康復(fù)護(hù)理
- 夢(mèng)幻西游翰墨之道全
- 執(zhí)業(yè)藥師 中藥一筆記
- 新科hg5300功放說(shuō)明書(shū)
- 2023-2024學(xué)年湖南省常德市小學(xué)語(yǔ)文六年級(jí)期末評(píng)估試卷附參考答案和詳細(xì)解析
- 華北理工環(huán)境監(jiān)測(cè)教案02水和廢水監(jiān)測(cè)-4金屬化合物-鋁、汞、鎘、鉛、銅、鋅、鉻、砷等測(cè)定
- 氣污染源自動(dòng)監(jiān)控設(shè)施臺(tái)賬記錄模版校準(zhǔn)記錄
- JJF 1169-2007汽車(chē)制動(dòng)操縱力計(jì)校準(zhǔn)規(guī)范
- 新高考高中物理競(jìng)賽專(zhuān)題1力學(xué)50題競(jìng)賽真題強(qiáng)化訓(xùn)練原卷版
- 2023年成都市成華發(fā)展集團(tuán)有限責(zé)任公司招聘筆試模擬試題及答案解析
- 曬紋資料大全
- 山東省泰安市2021-2022學(xué)年高一下學(xué)期期末考試數(shù)學(xué)試題(Word版含答案)
評(píng)論
0/150
提交評(píng)論