Java基礎(chǔ)教程(第3版)_第10章_JDBC數(shù)據(jù)庫操作_第1頁
Java基礎(chǔ)教程(第3版)_第10章_JDBC數(shù)據(jù)庫操作_第2頁
Java基礎(chǔ)教程(第3版)_第10章_JDBC數(shù)據(jù)庫操作_第3頁
Java基礎(chǔ)教程(第3版)_第10章_JDBC數(shù)據(jù)庫操作_第4頁
Java基礎(chǔ)教程(第3版)_第10章_JDBC數(shù)據(jù)庫操作_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第 1 頁注意:開始用功了注意:開始用功了!第 2 頁Java 基礎(chǔ)教程(第基礎(chǔ)教程(第3版)版) 第第10章章配合例子源代碼一起使用例子源代碼一起使用Power point 制作:耿祥義 張躍平JDBC數(shù)據(jù)庫操作數(shù)據(jù)庫操作 第 3 頁主要內(nèi)容主要內(nèi)容第 4 頁10.1 Microsoft Access Microsoft Access 數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng) 10.1.1 建立數(shù)據(jù)庫建立數(shù)據(jù)庫 建立一個(gè)名字為建立一個(gè)名字為shopshop的數(shù)據(jù)庫。的數(shù)據(jù)庫。操作步驟如下:操作步驟如下: 單擊單擊“開始開始”“”“所有程所有程序序”“”“Microsoft Access”Microsof

2、t Access”,在 新 建 數(shù) 據(jù) 庫 界 面 選 擇在 新 建 數(shù) 據(jù) 庫 界 面 選 擇 “ 空空AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫”,然后命名、保,然后命名、保存新建的數(shù)據(jù)庫,在這里我們命存新建的數(shù)據(jù)庫,在這里我們命名 的 數(shù) 據(jù) 庫 是名 的 數(shù) 據(jù) 庫 是 s h o ps h o p , 保 存 在保 存 在C:ch10C:ch10中。中。 第 5 頁10.1.2 創(chuàng)建表創(chuàng)建表 在在shopshop數(shù)據(jù)庫中創(chuàng)建名字為數(shù)據(jù)庫中創(chuàng)建名字為goodsgoods的表。在的表。在shopshop管管理的理的“表表”的界面上選擇的界面上選擇“使用設(shè)計(jì)器創(chuàng)建表使用設(shè)計(jì)器創(chuàng)建表”,然后,然后

3、單擊界面上的單擊界面上的“設(shè)計(jì)設(shè)計(jì)”菜單,將出現(xiàn)相應(yīng)的建表界面,菜單,將出現(xiàn)相應(yīng)的建表界面,我們建立的表是我們建立的表是goodsgoods,該表的字段該表的字段( (屬性屬性) )為:為:number( (文本文本) ) name( (文本文本) ) madeTime( (日期日期) ) price( (數(shù)字,雙精度數(shù)字,雙精度) )。 在在shop管理的管理的“表表”的界面上,用鼠標(biāo)雙擊已創(chuàng)建的界面上,用鼠標(biāo)雙擊已創(chuàng)建的表可以為該表添加記錄的表可以為該表添加記錄。第 6 頁 10.2 JDBCJDBC Java提供了專門用于操作數(shù)據(jù)庫的API,即JDBC (Java DataBase Co

4、nnection) 。JDBC操作不同的數(shù)據(jù)庫僅僅是連接方式上的差異而已,使用JDBC的應(yīng)用程序一旦和數(shù)據(jù)庫建立連接,就可以使用JDBC提供的API操作數(shù)據(jù)庫.程序經(jīng)常使JDBC進(jìn)行如下的操作 : (1)與一個(gè)數(shù)據(jù)庫建立連接。與一個(gè)數(shù)據(jù)庫建立連接。 (2)向數(shù)據(jù)庫發(fā)送向數(shù)據(jù)庫發(fā)送SQL語句。語句。 (3)處理數(shù)據(jù)庫返回的結(jié)果。處理數(shù)據(jù)庫返回的結(jié)果。第 7 頁10.3 連接數(shù)據(jù)庫連接數(shù)據(jù)庫 10.3.1 連接方式的選擇連接方式的選擇 和數(shù)據(jù)庫建立連接的常用兩種方式是:建立和數(shù)據(jù)庫建立連接的常用兩種方式是:建立JDBCODBCJDBCODBC橋接橋接器和加載純器和加載純JavaJava數(shù)據(jù)庫驅(qū)動(dòng)程

5、序:數(shù)據(jù)庫驅(qū)動(dòng)程序:使用使用JDBCODBCJDBCODBC橋接器方式的機(jī)制是,應(yīng)用程序只需建立橋接器方式的機(jī)制是,應(yīng)用程序只需建立JDBCJDBC和和ODBCODBC之間的連接,即所謂的建立之間的連接,即所謂的建立JDBCODBCJDBCODBC橋接器,而和數(shù)據(jù)庫橋接器,而和數(shù)據(jù)庫的連接由的連接由ODBCODBC去完成。去完成。如果使用純?nèi)绻褂眉僇avaJava數(shù)據(jù)庫驅(qū)動(dòng)程序連接數(shù)據(jù)庫需要得到數(shù)據(jù)庫廠商數(shù)據(jù)庫驅(qū)動(dòng)程序連接數(shù)據(jù)庫需要得到數(shù)據(jù)庫廠商提供的純提供的純JavaJava數(shù)據(jù)庫驅(qū)動(dòng)程序。數(shù)據(jù)庫驅(qū)動(dòng)程序。 使用使用JDBCODBC橋接器連接數(shù)據(jù)庫的優(yōu)點(diǎn):橋接器連接數(shù)據(jù)庫的優(yōu)點(diǎn):使得所編寫

6、的程序可以處理幾乎所有類型的數(shù)據(jù)庫。使用使用JDBCODBCJDBCODBC橋接器連接數(shù)據(jù)庫的缺點(diǎn):橋接器連接數(shù)據(jù)庫的缺點(diǎn):使得所編寫的程序依賴于ODBC,移植性差。使用純使用純Java數(shù)據(jù)庫驅(qū)動(dòng)程序連接數(shù)據(jù)庫的優(yōu)點(diǎn):數(shù)據(jù)庫驅(qū)動(dòng)程序連接數(shù)據(jù)庫的優(yōu)點(diǎn):移植性好,不依賴平臺(tái)。缺點(diǎn)是不同的數(shù)據(jù)庫需要不同的驅(qū)動(dòng)程序。第 8 頁10.3 連接數(shù)據(jù)庫連接數(shù)據(jù)庫 10.3.1使用使用JDBCODBCJDBCODBC橋接器連接數(shù)據(jù)庫橋接器連接數(shù)據(jù)庫 使用使用JDBCODBC橋接器連接數(shù)據(jù)庫的橋接器連接數(shù)據(jù)庫的3個(gè)步驟個(gè)步驟(1)建ODBC數(shù)據(jù)源(2)建立JDBC-ODBC橋接器(3)和ODBC數(shù)據(jù)源建立連接第

7、 9 頁10.3.2 ODBCODBC數(shù)據(jù)源數(shù)據(jù)源 1 1創(chuàng)建、修改或刪除數(shù)據(jù)源創(chuàng)建、修改或刪除數(shù)據(jù)源 選擇選擇“控制面板控制面板”“”“管理工具管理工具”“”“ODBCODBC數(shù)據(jù)源數(shù)據(jù)源”(某些(某些windows xpwindows xp系統(tǒng),需選擇系統(tǒng),需選擇“控制面板控制面板”“”“性能和維護(hù)性能和維護(hù)”“”“管管理工具理工具”“”“ODBCODBC數(shù)據(jù)源數(shù)據(jù)源”)。)。 雙擊雙擊ODBCODBC數(shù)據(jù)源圖標(biāo),出現(xiàn)的界面顯示了用戶已有的數(shù)據(jù)源的數(shù)據(jù)源圖標(biāo),出現(xiàn)的界面顯示了用戶已有的數(shù)據(jù)源的名稱。選擇名稱。選擇“系統(tǒng)系統(tǒng)DSN”DSN”或或“用戶用戶DSN”DSN”,單擊單擊“添加添加”

8、按鈕,可按鈕,可以創(chuàng)建新的數(shù)據(jù)源;單擊以創(chuàng)建新的數(shù)據(jù)源;單擊“配置配置”按鈕,可以重新配置已有的數(shù)按鈕,可以重新配置已有的數(shù)據(jù)源;單擊據(jù)源;單擊“刪除刪除”按鈕,可以刪除已有的數(shù)據(jù)源。按鈕,可以刪除已有的數(shù)據(jù)源。2 2為數(shù)據(jù)源選擇驅(qū)動(dòng)程序?yàn)閿?shù)據(jù)源選擇驅(qū)動(dòng)程序 因?yàn)橐L問因?yàn)橐L問AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫, ,選擇選擇Microsoft Acess DriverMicrosoft Acess Driver(* *.mdb.mdb)。3 3數(shù)據(jù)源名稱及對(duì)應(yīng)數(shù)據(jù)庫的所在位置數(shù)據(jù)源名稱及對(duì)應(yīng)數(shù)據(jù)庫的所在位置 在在名稱欄名稱欄里為數(shù)據(jù)源起一個(gè)自己喜歡的名字,這里我們起的里為數(shù)據(jù)源起一個(gè)自己喜

9、歡的名字,這里我們起的名字是名字是myData 。這個(gè)數(shù)據(jù)源就是指某個(gè)數(shù)據(jù)庫。在這個(gè)數(shù)據(jù)源就是指某個(gè)數(shù)據(jù)庫。在“數(shù)據(jù)庫選數(shù)據(jù)庫選擇擇”欄中選擇一個(gè)數(shù)據(jù)庫,這里我們選擇的是欄中選擇一個(gè)數(shù)據(jù)庫,這里我們選擇的是C:ch10下的下的shop.mdb數(shù)據(jù)庫。數(shù)據(jù)庫。 第 10 頁10.3.2 ODBCODBC數(shù)據(jù)源數(shù)據(jù)源_ _圖示圖示 第 11 頁10.3.3 建立建立JDBC-ODBCJDBC-ODBC橋接器橋接器 JDBC使用使用java.lang包中的包中的Class類建立類建立JDBC-ODBC橋接器。建立橋接器時(shí)可能發(fā)生異常,必須捕獲橋接器。建立橋接器時(shí)可能發(fā)生異常,必須捕獲這個(gè)異常,建立橋

10、接器的代碼是:這個(gè)異常,建立橋接器的代碼是:try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e) System.out.println(e); 第 12 頁10.3.4 建立連接建立連接 編寫連接數(shù)據(jù)庫代碼不會(huì)出現(xiàn)數(shù)據(jù)庫的名稱,只能出現(xiàn)數(shù)編寫連接數(shù)據(jù)庫代碼不會(huì)出現(xiàn)數(shù)據(jù)庫的名稱,只能出現(xiàn)數(shù)據(jù)源的名字。據(jù)源的名字。 首先使用首先使用java.sqljava.sql包中的包中的ConnectionConnection類類聲明一個(gè)對(duì)象,然后聲明一個(gè)對(duì)象,然后再使用類再使用類DriverManage

11、rDriverManager調(diào)用它的靜態(tài)方法調(diào)用它的靜態(tài)方法getConnectiongetConnection創(chuàng)建這創(chuàng)建這個(gè)連接對(duì)象,個(gè)連接對(duì)象,建立連接時(shí)應(yīng)捕獲建立連接時(shí)應(yīng)捕獲SQLException異常異常 :try Connection con= DriverManager.getConnection(“jdbc:odbc:數(shù)據(jù)源名字?jǐn)?shù)據(jù)源名字”, login name, password ); catch(SQLException e) Connection con=DriverManager. getConnection(jdbc:odbc:數(shù)據(jù)源名字?jǐn)?shù)據(jù)源名字, ,);為了能和數(shù)

12、據(jù)源為了能和數(shù)據(jù)源myDatamyData交換數(shù)據(jù),建立連接時(shí)應(yīng)捕獲交換數(shù)據(jù),建立連接時(shí)應(yīng)捕獲SQLExceptionSQLException異常:異常:try Connection con=DriverManager.getConnection(jdbc:odbc:myData, ,);catch(SQLException e)第 13 頁10.4 查詢操作查詢操作 JDBCJDBC和數(shù)據(jù)庫表進(jìn)行交互的主要方式是使用和數(shù)據(jù)庫表進(jìn)行交互的主要方式是使用SQLSQL語句,語句,JDBCJDBC提供的提供的APIAPI可以將標(biāo)準(zhǔn)的可以將標(biāo)準(zhǔn)的SQLSQL語句發(fā)送給數(shù)據(jù)庫,實(shí)現(xiàn)和數(shù)據(jù)庫的語句發(fā)送給數(shù)

13、據(jù)庫,實(shí)現(xiàn)和數(shù)據(jù)庫的交互。交互。 第 14 頁10.4.1 順序查詢順序查詢 對(duì)一個(gè)數(shù)據(jù)庫中表進(jìn)行查詢操作的具體步驟如下。對(duì)一個(gè)數(shù)據(jù)庫中表進(jìn)行查詢操作的具體步驟如下。 1 1向數(shù)據(jù)庫發(fā)送向數(shù)據(jù)庫發(fā)送SQLSQL查詢語句查詢語句 try Statement sql=con.createStatement(); catch(SQLException e ) 2處理查詢結(jié)果處理查詢結(jié)果 ResultSet rs=sql.executeQuery(SELECT * FROM goods); ResultSet rs = sql.executeQuery(SELECT name,price FROM g

14、oods);3.3.查詢結(jié)果放在實(shí)現(xiàn)了查詢結(jié)果放在實(shí)現(xiàn)了ResultSetResultSet接口的結(jié)果集類中。接口的結(jié)果集類中。 第 15 頁15ResultSet接口 ResultSet對(duì)象包含符合指定SQL語句中條件的所有行,即結(jié)果集 并且它通過一套get方法(這些get方法可以訪問當(dāng)前行中的不同列)提供了對(duì)這些行中數(shù)據(jù)的訪問。 ResultSet對(duì)象使用對(duì)象使用next()方法移到下一數(shù)據(jù)行方法移到下一數(shù)據(jù)行 ResultSet對(duì)象使用對(duì)象使用getXxx方法獲得字段值方法獲得字段值 表表10.1給了出了給了出了ResultSet對(duì)象的若干方法。對(duì)象的若干方法。 注:無論字段是何種屬性,

15、總可以使用注:無論字段是何種屬性,總可以使用getString(int columnIndex)或或getString(String columnName)方法返回字段值的串表示。方法返回字段值的串表示。 第 16 頁 例子例子1是一個(gè)簡單的是一個(gè)簡單的Java應(yīng)用程序,該程應(yīng)用程序,該程序連接到數(shù)據(jù)源序連接到數(shù)據(jù)源myData,查詢查詢goods表表中中price字段值大于字段值大于300000的全部記錄。的全部記錄。程序運(yùn)行效果如圖程序運(yùn)行效果如圖10.8。 第 17 頁10.4.2 控制游標(biāo)控制游標(biāo) 需要在結(jié)果集中前后移動(dòng)、顯示結(jié)果集指定的一條記錄或隨機(jī)顯示若干條需要在結(jié)果集中前后移動(dòng)、

16、顯示結(jié)果集指定的一條記錄或隨機(jī)顯示若干條記錄等。這時(shí),必須要返回一個(gè)可滾動(dòng)的結(jié)果集。為了得到一個(gè)可滾動(dòng)的結(jié)果記錄等。這時(shí),必須要返回一個(gè)可滾動(dòng)的結(jié)果集。為了得到一個(gè)可滾動(dòng)的結(jié)果集,需使用下述方法先獲得一個(gè)集,需使用下述方法先獲得一個(gè)Statement對(duì)象:對(duì)象: Statement stmt=con.createStatement(int type ,int concurrency); 然后根據(jù)參數(shù)的然后根據(jù)參數(shù)的type、concurrency的取值情況的取值情況,stmt返回相應(yīng)類型的結(jié)果集:返回相應(yīng)類型的結(jié)果集: ResultSet re=stmt.executeQuery(SQL語句語

17、句); type的取值、的取值、 concurrency的取值見的取值見page 176 滾動(dòng)查詢經(jīng)常用到滾動(dòng)查詢經(jīng)常用到ResultSet的下述方法:的下述方法: public boolean previous() public boolean previous():將游標(biāo)向上移動(dòng) public void beforeFirst() public void beforeFirst():將游標(biāo)移動(dòng)到結(jié)果集的初始位置。 更多方法見更多方法見page 176 例子例子2中中,在查詢,在查詢goods表表時(shí),首先將游標(biāo)移動(dòng)到最后一時(shí),首先將游標(biāo)移動(dòng)到最后一行,然后再獲取最后一行的行行,然后再獲取最后

18、一行的行號(hào),以便獲得表中的記錄數(shù)目。號(hào),以便獲得表中的記錄數(shù)目。程序倒序輸出程序倒序輸出goods表中的記表中的記錄,錄,效果如圖效果如圖10.910.9。 第 18 頁Statement stmt=con.createStatement(int type ,int concurrency); type的取值決定滾動(dòng)的方式: ResultSet.TYPE_FORWORD_ONLY:結(jié)果集的游標(biāo)只能向下移動(dòng)。 ResultSet.TYPE_SCROLL_INSENSITIVE:結(jié)果集的游標(biāo)可以上下移動(dòng),且當(dāng)數(shù)據(jù)庫變化時(shí),當(dāng)前結(jié)果集不變。 ResultSet.TYPE_SCROLL_SENSITI

19、VE:結(jié)果集的游標(biāo)可以上下移動(dòng),且當(dāng)數(shù)據(jù)庫變化時(shí),當(dāng)前結(jié)果集同步改變。第 19 頁Statement stmt=con.createStatement(int type ,int concurrency);Concurrency取值決定是否可以用結(jié)果集去更新數(shù)據(jù)庫。 ResultSet.CONCUR_READ_ONLY 不能用結(jié)果集去更新數(shù)據(jù)庫。 ResultSet.CONCUR_UPDATABLE 能用結(jié)果集去更新數(shù)據(jù)庫。第 20 頁ResultSet re=stmt.executeQuery(SQL語句語句);滾動(dòng)查詢經(jīng)常用到的ResultSet類的方法:public boolean pr

20、evious()將游標(biāo)向上移動(dòng),當(dāng)移到結(jié)果集第一行之前時(shí)返回false。public boolean next()將游標(biāo)向下移動(dòng),當(dāng)移到結(jié)果集第后一行之后時(shí)返回false。public void beforeFirst()將游標(biāo)移動(dòng)到結(jié)果集第一行之前。public void first()將游標(biāo)移動(dòng)到結(jié)果集第一行。public void last()將游標(biāo)移動(dòng)到結(jié)果集第后一行。public boolean absolute(int row)將游標(biāo)移動(dòng)到參數(shù)指定的行,row可以是負(fù)數(shù),表示倒數(shù)第row行public boolean isFirst()判斷游標(biāo)是否指向結(jié)果集的第一行。public

21、boolean isLast()判斷游標(biāo)是否指向結(jié)果集的第后一行。第 21 頁10.4.3 條件查詢條件查詢 例子例子3 3,分別按商品號(hào)和價(jià)格查詢記錄。主類將查,分別按商品號(hào)和價(jià)格查詢記錄。主類將查詢條件傳遞詢條件傳遞QueryQuery類類的實(shí)例。的實(shí)例。程序運(yùn)行效果如圖程序運(yùn)行效果如圖10.1010.10。 第 22 頁10.4.4 排序查詢排序查詢 可以在可以在SQLSQL語句中使用語句中使用ORDER BYORDER BY子語句對(duì)記錄排序,子語句對(duì)記錄排序,例如,按例如,按priceprice排序查詢的排序查詢的SQLSQL語句:語句: SELECT * FROM goods ORD

22、ER BY price 例子例子4 4中使用例子中使用例子3 3中的中的QueryQuery類類的實(shí)例分別按商品的實(shí)例分別按商品名稱和價(jià)格排序名稱和價(jià)格排序goodsgoods表中的全部記錄。表中的全部記錄。程序運(yùn)行效果程序運(yùn)行效果如圖如圖10.1110.11。 第 23 頁10.4.5 模糊查詢模糊查詢 可以用可以用SQL語句操作符語句操作符LIKE進(jìn)行模式般配,使用進(jìn)行模式般配,使用“%”代替代替零個(gè)或多個(gè)字符,用一個(gè)下劃線零個(gè)或多個(gè)字符,用一個(gè)下劃線“_”代替一個(gè)字符,用代替一個(gè)字符,用abc代代替替a、b、c中的任何一個(gè)。比如,下述語句查詢商品名稱中含有中的任何一個(gè)。比如,下述語句查詢

23、商品名稱中含有“T”或或“寶寶”的記錄:的記錄: rs = sql.executeQuery(SELECT * FROM goods WHERE name LIKE T寶寶% ); 例子例子5中使用例子中使用例子3中中Query類類的實(shí)例模糊查詢表中的記錄。的實(shí)例模糊查詢表中的記錄。程序運(yùn)行效果如圖程序運(yùn)行效果如圖10.1210.12。 第 24 頁10.5 更新、添加與刪除操作更新、添加與刪除操作 StatementStatement對(duì)象對(duì)象調(diào)用方法:調(diào)用方法: public int executeUpdate(String sqlStatement); 通過參數(shù)通過參數(shù)sqlStateme

24、ntsqlStatement指定的方式實(shí)現(xiàn)對(duì)數(shù)據(jù)庫表中記錄的指定的方式實(shí)現(xiàn)對(duì)數(shù)據(jù)庫表中記錄的更新、添加和刪除操作。更新、添加和刪除操作。 更新、添加和刪除記錄的更新、添加和刪除記錄的SQLSQL語法分別是:語法分別是: UPDATE SET = 新值新值 WHERE 例:UPDATE goods SET price =3009 WHERE name=海爾電視機(jī)。 INSERT INTO 表表(字段列表字段列表) VALUES (對(duì)應(yīng)的具體的記錄)或?qū)?yīng)的具體的記錄)或INSERT INTO 表表(VALUES (對(duì)應(yīng)的具體的記錄)對(duì)應(yīng)的具體的記錄) 例:例:INSERT INTO goods(

25、number,name,madeTime,price) VALUES (A009,手機(jī),2010-12-20,3976) DELETE FROM WHERE 例例 DELETE FROM goods WHERE number = B002 例子例子6中,中,Example10_6.javaExample10_6.java,ModifyTable類能更新、插入類能更新、插入和刪除表中的記錄和刪除表中的記錄. . 第 25 頁10.6 事務(wù)事務(wù) 10.6.1 事務(wù)及處理事務(wù)及處理 事務(wù)由一組事務(wù)由一組SQLSQL語句組成,所謂事務(wù)處理是指:語句組成,所謂事務(wù)處理是指:應(yīng)用程序保證事務(wù)中的應(yīng)用程序保

26、證事務(wù)中的SQLSQL語句要么全部都執(zhí)行,語句要么全部都執(zhí)行,要么一個(gè)都不執(zhí)行。要么一個(gè)都不執(zhí)行。 事務(wù)處理是保證數(shù)據(jù)庫中數(shù)據(jù)完整性與一致事務(wù)處理是保證數(shù)據(jù)庫中數(shù)據(jù)完整性與一致性的重要機(jī)制。例如銀行系統(tǒng)的轉(zhuǎn)賬業(yè)務(wù)至少需性的重要機(jī)制。例如銀行系統(tǒng)的轉(zhuǎn)賬業(yè)務(wù)至少需要兩條要兩條SQLSQL語句去修改語句去修改A A、B B帳戶的余額,應(yīng)用程帳戶的余額,應(yīng)用程序必須保證這兩條序必須保證這兩條SQLSQL語句要么全部執(zhí)行,要么語句要么全部執(zhí)行,要么全部都不執(zhí)行。全部都不執(zhí)行。 第 26 頁10.6.2 JDBCJDBC事務(wù)處理步驟事務(wù)處理步驟 1 1使用setAutoCommit(boolean aut

27、oCommit)方法 和數(shù)據(jù)庫建立一個(gè)連接對(duì)象后,比如con。那么con的提交模式默認(rèn)是自動(dòng)提交模式(執(zhí)行的SQL語句立刻生效),為了能進(jìn)行事 務(wù) 處 理 , 必 須 關(guān) 閉 c o n 的 這 個(gè) 默 認(rèn) 設(shè) 置 。con.setAutoCommit(false); 2 2使用commit()方法 連接對(duì)象con調(diào)用commit()方法就是讓事務(wù)中的SQL語句全部生效。 3 3使用rollback()方法 con調(diào)用rollback()方法的作用是撤消事務(wù)中成功執(zhí)行過的SQL語句對(duì)數(shù)據(jù)庫數(shù)據(jù)所做的更新、插入或刪除操作,即撤消引起數(shù)據(jù)發(fā)生變化的SQL語句操作,將數(shù)據(jù)庫中的數(shù)據(jù)恢復(fù)到commit()方法執(zhí)行之前的狀態(tài)。 例子例子7 7使用了事務(wù)處理將使用了事務(wù)處理將goodsgoods表中表中numbernumber字段是字段是“A001”A001”的的priceprice的值減少的值減少n n,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論