Java語言程序設(shè)計基礎(chǔ)教程課件(第13章)2_第1頁
Java語言程序設(shè)計基礎(chǔ)教程課件(第13章)2_第2頁
Java語言程序設(shè)計基礎(chǔ)教程課件(第13章)2_第3頁
Java語言程序設(shè)計基礎(chǔ)教程課件(第13章)2_第4頁
Java語言程序設(shè)計基礎(chǔ)教程課件(第13章)2_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第13章Java數(shù)據(jù)庫連接 JDBC JDBC概述 JDBC主要的接口和核心類JDBC進行數(shù)據(jù)庫操作的步驟使用JDBC進行常用數(shù)據(jù)操作13.1 JDBC概述利用Java編程語言訪問數(shù)據(jù)庫是通過JDBCJava Database Connectivity,即Java數(shù)據(jù)庫連接機制實現(xiàn)的。JDBC是一種Java數(shù)據(jù)庫連接API(Application Programming Interface:應用編程接口),它為Java程序員提供了一種在Java代碼中訪問關(guān)系數(shù)據(jù)庫的標準方法。JDBC定義了一組API對象和方法用于同各種數(shù)據(jù)庫進行交互。 JDBC API、數(shù)據(jù)庫驅(qū)動程序與數(shù)據(jù)庫之間的關(guān)系 13.

2、2 JDBC的類型類型1: JDBC-ODBC橋 類型2:Pure Java Driver類型3:JDBC-middleware類型三:JDBC-Middleware由中間件來實現(xiàn)數(shù)據(jù)庫的連接管理MiddlewareJDBC數(shù)據(jù)庫程序的開發(fā)步驟加載驅(qū)動程序建立Connection對象,以建立和數(shù)據(jù)庫的連接建立Statement對象執(zhí)行executeQuery(select 查詢操作)或executeUpdate(insert等更新操作)方法關(guān)閉連接13.3 JDBC主要接口和核心類JDBC由一組Java類庫和接口庫組成java.sql.*和javax.sql.*一般的數(shù)據(jù)庫廠商如Oracle,

3、Microsoft,MySQL等,都會提供專用的JDBC數(shù)據(jù)庫驅(qū)動程序。各種JDBC驅(qū)動程序可到數(shù)據(jù)庫廠商的網(wǎng)站下載。完整的JDBC體系結(jié)構(gòu)1. Driver接口在Java程序開發(fā)中如果要連接數(shù)據(jù)庫,必須先加載數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫驅(qū)動程序。不同類型的JDBC數(shù)據(jù)庫驅(qū)動程序在編程時的加載方法也不同。如果使用JDBC驅(qū)動程序,可以這樣加載:Class.forName(jdbcdriver_classname).newInstance();如,MySQLClass.forName(com.mysql.jdbc.Driver).newInstance();如果使用JDBC/ODBC橋驅(qū)動程序,可以這

4、樣加載:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver).newInstance();加載完成后即可使用該JDBC驅(qū)動程序。2. DriverManager類DriverManager類是驅(qū)動程序管理類,負責管理JDBC驅(qū)動程序。使用JDBC驅(qū)動程序之前,必須先將驅(qū)動程序加載并向DriverManager注冊后才可以使用,同時提供方法來建立與數(shù)據(jù)庫的連接。String url=jdbc:mysql:/localhost/+dbName+?user=+userName+&password=+userPwd;Connection conn=DriverMana

5、ger.getConnection(url);3. Connection類 數(shù)據(jù)庫連接類Connection類經(jīng)常使用的函數(shù)如下:Void setAutoCommit(boolean b)void commit() void rollback()void close()boolean isClosed()P302 DBSource數(shù)據(jù)庫連接類Connection類經(jīng)常使用的函數(shù)如下:Statement createStatement() Statement createStatement(int resultSetType,int resultSetConcurrency) PreparedS

6、tatement prepareStatement(String sql)resultSetType取值:TYPE_FORWORD_ONLY:結(jié)果集不可滾動TYPE_SCROLL_INSENSITIVE:結(jié)果集可滾動,不反映數(shù)據(jù)庫的變化TYPE_SCROLL_SENSITIVE:結(jié)果集可滾動,反映數(shù)據(jù)庫的變化resultSetConcurrency取值:CONCUR_READ_ONLY:不能用結(jié)果集更新數(shù)據(jù)CONCUR_UPDATABLE:能用結(jié)果集更新數(shù)據(jù)4. Statement類 Statement:執(zhí)行語句類。通過Statement類所提供的方法,可以利用標準的SQL命令,對數(shù)據(jù)庫直接進

7、行新增、修改或刪除操作。Connection接口類提供了生成Statement對象的函數(shù),一般情況下,使用createStatement()函數(shù)就可以得到Statement的實例。Statement類常用函數(shù):ResultSet executeQuery(String sql):使用SELECT命令對數(shù)據(jù)庫進行查詢并返回ResultSet結(jié)果集。int executeUpdate(String sql):使用INSERTDELETEUPDATE對數(shù)據(jù)庫進行新增、修改或刪除操作。void close():結(jié)束Statement類對象和數(shù)據(jù)庫之間的連接。6. ResultSet類ResultSet

8、類:結(jié)果集,存儲查詢數(shù)據(jù)庫的結(jié)果提供一系列的方法對數(shù)據(jù)庫進行新增、修改或刪除操作。負責維護一個記錄指針(Cursor),記錄指針指向數(shù)據(jù)表中的某個記錄,通過適當?shù)囊苿佑涗浿羔?,可以隨心所欲的存取數(shù)據(jù)庫,加強程序的效率。ResultSet常用方法:Boolean absolute(int row)Void beforeFirst()Void afterLast()Boolean first()Boolean last()Boolean next()Boolean previous()getXXX()Void deleteRow()/insertRow()/updateRow()P305 13-4

9、5. PreparedStatement類 PreparedStatement類:預編譯執(zhí)行語句當有單一的SQL指令多次執(zhí)行時,用PreparedStatement類會比Statement類有效率。ResultSet executeQuery()Int executeUpdate()ResultSetMetaData getMetaData()setInt(int ,int )setFloat(int ,float) setString(int ,String)setDate(int ,date )SetXXX(int ,XXX)P305 13-47. ResultSetMetaData類 R

10、esultSetMetaData類:結(jié)果集元數(shù)據(jù)保存了所有ResultSet類對象中關(guān)于字段等元數(shù)據(jù)信息,并提供許多方法來取得這些信息。常用方法:getColumnCount()String getColumnName(int column)String getColumnTypeName(int column)String getTableName(int column)P317 13-88. DatabaseMetaData類 DatabaseMetaData類:數(shù)據(jù)庫元數(shù)據(jù),并且提供許多方法來取得這些信息。 常用方法:String getDatabaseProductName()Stri

11、ng getDatabaseProdctVirsion()String getDriverName()String getURL()String getUserName()13.5.4 LOB讀寫如果要將文件寫入數(shù)據(jù)庫,可以在表格字段上使用BLOB或CLOB數(shù)據(jù)類型。BLOB全名Binary Large Object,即二進制大對象,用于存儲大量的二進制數(shù)據(jù);CLOB全名Character Large Object,即字符型大對象,用于存儲大量的文字數(shù)據(jù)。在JDBC中也提供了java.sql.Blob與java.sql.Clob兩個類分別代表BLOB與CLOB數(shù)據(jù)13.5.5 事務(Trans

12、action)事務是一組原子(Atomic)操作的工作單元,所有原子操作在進行期間,與其他事務隔離;所有原子操作,要么全部執(zhí)行成功,要么全部失敗舉個關(guān)于事務概念的簡單例子,一個客戶從A銀行轉(zhuǎn)賬至B銀行,要做的操作為從A銀行的賬戶扣款、在B銀行的賬戶加上轉(zhuǎn)賬的金額,兩個動作必須成功,如果有一個動作失敗,則此次轉(zhuǎn)賬失敗。P31213.5.6 批處理 Statement的execute()等方法一次只能執(zhí)行一個SQL語句,如果有多個SQL語句要執(zhí)行的話,可以使用addBatch()方法將要執(zhí)行的SQL語句加入然后執(zhí)行 executeBatch()方法13.5.7 ResultSet光標控制 在建立Statement或 PreparedStatement時,所使用的是Connection無參數(shù)的createStatement()方法,或是僅指定預編譯的SQL的preparedStatement()方法,這樣獲得的Statement或PreparedStatement對象在執(zhí)行SQL后所得到的ResultSet,將只能使用next()方法逐條獲得查詢結(jié)果。P

溫馨提示

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

最新文檔

評論

0/150

提交評論