JAVA WEB數(shù)據(jù)庫訪問PPT課件_第1頁
JAVA WEB數(shù)據(jù)庫訪問PPT課件_第2頁
JAVA WEB數(shù)據(jù)庫訪問PPT課件_第3頁
JAVA WEB數(shù)據(jù)庫訪問PPT課件_第4頁
JAVA WEB數(shù)據(jù)庫訪問PPT課件_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數(shù)據(jù)庫訪問,夏汛,瀘職院信息工程系,學習目標,能夠使用JDBC訪問數(shù)據(jù)庫,JDBC驅動程序的類型,JDBC-ODBC橋(訪問access,只能通過JDBC-ODBC橋)部分本地API,部分Java驅動程序JDBC網絡純Java驅動程序本地協(xié)議純Java驅動程序,下載安裝Mysql,下載和使用MysqlJDBC驅動,JDBCAPI,訪問數(shù)據(jù)庫的代碼: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-加載與注冊JDBC驅動,1.Driver接口java.sql.Driver是所有JDBC驅動程序需要實現(xiàn)的接口,這個接口主要是提供給數(shù)據(jù)庫廠商使用,不同廠商該接口的類名是不同的。com.microsoft.jdbc.sqlserver.SQLServerDriversql2000的驅動類名com.microsoft.sqlserver.SQLServerDriversql2005的驅動類名oracle.jdbc.driver.OracleDriverOracle的JDBC驅動類名com.mysql.jdbc.Drivermysql的驅動類名Driver接口中提供了一個Connect()方法,用來建立到數(shù)據(jù)庫的連接Connectionconnect(Stringurl,propertiesinfo)throwsSQLException,JDBCAPI-加載與注冊JDBC驅動,2.加載與注冊JDBC驅動加載JDBC驅動是調用Class類的靜態(tài)方法forName(),向其傳遞要加載的JDBC驅動的類名。DriverManager類是驅動程序管理類,負責管理驅動程序,這個類中所有方法都是靜態(tài)的,在DriverManager類中提供了registerDriver()方法來注冊驅動程序類的實例。publicstaticvoidregisterDriver(Driverdriver)throwsSQLException通常不需要親自去調用registerDriver()方法來注冊驅動程序類的實例,因為實現(xiàn)Driver接口的驅動程序類都包含了靜態(tài)代碼塊,在這個靜態(tài)代碼塊中,會調用DriverManager.registerDriver()方法來注冊自身的一個實例。,JDBCAPI-建立到數(shù)據(jù)庫的連接,3.建立到數(shù)據(jù)庫的連接在DriverManger類中提供了3個重載的getConnection()方法PublicstaticConnectiongetConnection(Stringurl)throwsSQLExceptionPublicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLExceptionPublicstaticConnectiongetConnection(Stringurl,Propertiesinfo)throwsSQLExceptionMysql的URL:jdbc:mysql:/localhost:3306/databasename,JDBCAPI-訪問數(shù)據(jù)庫,1.StaementStaementcreateStaement()throwsSQLException該方法創(chuàng)建一個Staement對象,用于向數(shù)據(jù)庫發(fā)送SQL語句,沒有參數(shù)的SQL語句通常用Statement對象來執(zhí)行Staement中定義了下列方法用于執(zhí)行SQL語句ResultSetexeCuteQuery(Stringsql)throwsSQLException該方法執(zhí)行參數(shù)sql指定的sql語句,返回一個ResultSet對象,ResultSet用于查看執(zhí)行結果。intexecuteUpdate(Stringsql)throwsSQLException該方法執(zhí)行參數(shù)sql指定的INSERT、UPDATE或者DELETE語句,也可執(zhí)行SQLDDL語句,如CREATETABLEbooleanexecute(Stringsql)throwsSQLException該方法執(zhí)行返回多個結果集的SQL語句intexecuteBatch()throwsSQLException該方法允許我們向數(shù)據(jù)庫提交一批命令,然后一起執(zhí)行。大量SQL語句的批量執(zhí)行可以顯著提高性能。如果所有命令都成功執(zhí)行,返回值是一個更新行數(shù)的數(shù)組。數(shù)組中每一個int元素是按照加入命令的先后順序來存儲的,表示了相應命令的更新行數(shù)??梢允褂胊ddBatch()方法將SQL命令加入到命令列表中。,JDBCAPI-訪問數(shù)據(jù)庫,2.ResultSetResultSet接口由數(shù)據(jù)庫廠商實現(xiàn),ResultSet對象維護了一個指向當前數(shù)據(jù)行的游標,初始的時候,游標在第一行之前,可以通過ResultSet對象的next()方法移動游標到下一行。booleannext()throwsSQLExceptionResultSet接口中定義了很多方法來獲取當前行中的數(shù)據(jù),根據(jù)字段類型的不同用不同的方法來獲取數(shù)據(jù)。方法略每種方法,又提供了兩種形式的調用,一種是以列的索引作為參數(shù)(索引從1開始),一種是以列的名字作為參數(shù)。如果不知道要獲取的列數(shù)據(jù)類型,可以一律采用getString()方法來得到String類型的數(shù)據(jù),JDBCAPI-訪問數(shù)據(jù)庫,3.PreparedStatement在程序中傳遞的SQL語句在執(zhí)行前必須被預編譯,包括語句分析、代碼優(yōu)化等,然后才能被數(shù)據(jù)庫引擎執(zhí)行。如果重復執(zhí)行只有參數(shù)不同的SQL語句,是比較低效的。如果要用不同的參數(shù)來多次執(zhí)行同一個SQL語句,可以使用PreparedStatement的對象。PreparedStatementpstmt=conn.preparedStatement(“insertemployeevalues(?,?,?)”);pstmt.setInt(1,1);pstmt.setString(2,”zhangsan”);pstmt.setDate(3,java.sql.Date.valueof(“2011-2-25”);pstmt.executeUpdate();,可滾動結果集,之前通過Statement對象所創(chuàng)建的結果集只能向前滾動,即只能調用next()方法向前得到數(shù)據(jù)行,無法向后滾動。如果要獲得一個可滾動的結果集,需要在創(chuàng)建Statement或PreparedStatement對象時,調用Connection對象的另一個重載的createStatement()方法:Statementstmt=conn.createStatement(type,concurrency);PreparedStatementpstmt=conn.preparedStatement(type,concurrency);其中type可?。篟esultSet.TYPE_FORWARD_ONLY:結果集不能滾動ResultSet.TYPE_SCROLL_INSENSITIVE:結果集可以滾動,但是對數(shù)據(jù)庫變化不敏感,數(shù)據(jù)庫查詢生成結果集后發(fā)生了變化,結果集不發(fā)生變化。ResultSet.TYPE_SCROLL_SENSITIVE:結果集可以滾動,但是對數(shù)據(jù)庫變化敏感。例如通過查詢返回了10行數(shù)據(jù),如果另一個程序刪除了其中的2行,那么這個結果集中就只有8行了,Concurrency可?。篟esultSet.CONCUR_READ_ONLY結果集不能用于更新數(shù)據(jù)庫ResultSet.CONCUR_UPDATABLE結果集可以用于更新數(shù)據(jù)庫,ResultSet接口為可滾動結果集提供的方法,booleanisBeforeFirst()throwsSQLExceptionbooleanisAfterLast()throwsSQLExceptionbooleanisFirst()throwsSQLExceptionbooleanisLast()throwsSQLException以上4種方法分別用于判斷游標是否位于第一行之前、最后一行之后、第一行和最后一行,voidbeforeFirst()throwsSQLException該方法移動游標到結果集第一行之前voidafterLast()throwsSQLException該方法移動游標到結果集最后一行之后booleanfirst()throwsSQLException該方法移動游標到結果集的第一行b

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論