JAVA WEB數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)ppt課件_第1頁(yè)
JAVA WEB數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)ppt課件_第2頁(yè)
JAVA WEB數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)ppt課件_第3頁(yè)
JAVA WEB數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)ppt課件_第4頁(yè)
JAVA WEB數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)ppt課件_第5頁(yè)
已閱讀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)介

1、數(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, 下載mysql的社區(qū)版本MySQL Community Server,下載和使用Mysql JDBC驅(qū)動(dòng), Mysql的JDBC驅(qū)動(dòng)沒(méi)有包含在數(shù)據(jù)庫(kù)的安裝包中,需要單獨(dú)下載 進(jìn)入網(wǎng)址后,點(diǎn)擊“Connector/J”,下載Mysql的JDBC驅(qū)動(dòng) 在Eclipse項(xiàng)目文件夾下,建立文件夾lib,將JDBC驅(qū)動(dòng)

2、拷貝進(jìn)去,然后在Eclipse里該項(xiàng)目上右鍵點(diǎn)擊“屬性”“Java構(gòu)建路徑”“庫(kù)”,添加JAR,將mysql-connector-java-5.1.13-bin.jar選中即可。,JDBC API,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的代碼: Class.forName(com.mysql.jdbc.Driver); Connection conn=DriverManager.getConnection(“jdbc:mysql:/localhost:3306/DB,root,123); Statement stmt=conn.createStatment(); ResultSet rs=stmt.executeQuer

3、y(select * from emp),JDBC API-加載與注冊(cè)JDBC驅(qū)動(dòng),1.Driver接口 java.sql.Driver是所有JDBC驅(qū)動(dòng)程序需要實(shí)現(xiàn)的接口,這個(gè)接口主要是提供給數(shù)據(jù)庫(kù)廠(chǎng)商使用,不同廠(chǎng)商該接口的類(lèi)名是不同的。 com.microsoft.jdbc.sqlserver.SQLServerDriver sql2000的驅(qū)動(dòng)類(lèi)名 com.microsoft.sqlserver.SQLServerDriver sql2005的驅(qū)動(dòng)類(lèi)名 oracle.jdbc.driver.OracleDriver Oracle的JDBC驅(qū)動(dòng)類(lèi)名 com.mysql.jdbc.Drive

4、r mysql的驅(qū)動(dòng)類(lèi)名 Driver接口中提供了一個(gè)Connect()方法,用來(lái)建立到數(shù)據(jù)庫(kù)的連接 Connection connect(String url,properties info) throws SQLException,JDBC API-加載與注冊(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í)例。

5、public static void registerDriver(Driver driver) throws SQLException 通常不需要親自去調(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í)例。,JDBC API-建立到數(shù)據(jù)庫(kù)的連接,3.建立到數(shù)據(jù)庫(kù)的連接 在DriverManger類(lèi)中提供了3個(gè)重載的getConnection()方法 Public static Connection getConne

6、ction(String url) throws SQLException Public static Connection getConnection(String url,String user,String password) throws SQLException Public static Connection getConnection(String url,Properties info) throws SQLException Mysql的URL:jdbc:mysql:/localhost:3306/databasename,JDBC API-訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),1.Staement

7、Staement createStaement() throws SQLException 該方法創(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ǔ)句 ResultSet exeCuteQuery(String sql) throws SQLException 該方法執(zhí)行參數(shù)sql指定的sql語(yǔ)句,返回一個(gè)ResultSet對(duì)象, ResultSet用于查看執(zhí)行結(jié)果。 int executeUpdate(String sql) throws SQLException 該方法執(zhí)行參數(shù)s

8、ql指定的INSERT、UPDATE或者DELETE語(yǔ)句,也可執(zhí)行SQL DDL語(yǔ)句,如CREATE TABLE boolean execute(String sql) throws SQLException 該方法執(zhí)行返回多個(gè)結(jié)果集的SQL語(yǔ)句 int executeBatch() throws SQLException 該方法允許我們向數(shù)據(jù)庫(kù)提交一批命令,然后一起執(zhí)行。大量SQL語(yǔ)句的批量執(zhí)行可以顯著提高性能。如果所有命令都成功執(zhí)行,返回值是一個(gè)更新行數(shù)的數(shù)組。數(shù)組中每一個(gè)int元素是按照加入命令的先后順序來(lái)存儲(chǔ)的,表示了相應(yīng)命令的更新行數(shù)。可以使用addBatch()方法將SQL命令加入

9、到命令列表中。,JDBC API-訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),2.ResultSet ResultSet接口由數(shù)據(jù)庫(kù)廠(chǎng)商實(shí)現(xiàn), ResultSet對(duì)象維護(hù)了一個(gè)指向當(dāng)前數(shù)據(jù)行的游標(biāo),初始的時(shí)候,游標(biāo)在第一行之前,可以通過(guò)ResultSet對(duì)象的next()方法移動(dòng)游標(biāo)到下一行。 boolean next() throws SQLException ResultSet接口中定義了很多方法來(lái)獲取當(dāng)前行中的數(shù)據(jù),根據(jù)字段類(lèi)型的不同用不同的方法來(lái)獲取數(shù)據(jù)。方法略 每種方法,又提供了兩種形式的調(diào)用,一種是以列的索引作為參數(shù)(索引從1開(kāi)始),一種是以列的名字作為參數(shù)。 如果不知道要獲取的列數(shù)據(jù)類(lèi)型,可以一律采用getSt

10、ring()方法來(lái)得到String類(lèi)型的數(shù)據(jù),JDBC API-訪(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ì)象。 PreparedStatement pstmt=conn. preparedStatement(“insert employee values(?,?,?)”); pstmt.setInt(1,1); pstmt.setString(2

11、,”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()方法: Statement stmt=conn.createStatement(type, concurrency

12、);PreparedStatement pstmt=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行了,Concu

13、rrency可取: ResultSet.CONCUR_READ_ONLY 結(jié)果集不能用于更新數(shù)據(jù)庫(kù) ResultSet.CONCUR_UPDATABLE 結(jié)果集可以用于更新數(shù)據(jù)庫(kù),ResultSet接口為可滾動(dòng)結(jié)果集提供的方法,boolean isBeforeFirst () throws SQLException boolean isAfterLast () throws SQLException boolean isFirst() throws SQLException boolean isLast() throws SQLException 以上4種方法分別用于判斷游標(biāo)是否位于第一行之前、最后一行之后、第一行和最后一行,void beforeFirst() throws SQLException 該方法移動(dòng)游標(biāo)到結(jié)果集第一行之前 void afterLast() throws SQLException 該方法移動(dòng)游標(biāo)到結(jié)果集最后一行之后 boolean first() throws SQLException 該方法移動(dòng)游

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論