Delphi數(shù)據(jù)庫高級應(yīng)用技術(shù)實用教案_第1頁
Delphi數(shù)據(jù)庫高級應(yīng)用技術(shù)實用教案_第2頁
Delphi數(shù)據(jù)庫高級應(yīng)用技術(shù)實用教案_第3頁
Delphi數(shù)據(jù)庫高級應(yīng)用技術(shù)實用教案_第4頁
Delphi數(shù)據(jù)庫高級應(yīng)用技術(shù)實用教案_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、10.1 事務(wù)處理2. 一致性事務(wù)是一個完整的單元,因為它保持?jǐn)?shù)據(jù)的一致性,將數(shù)據(jù)從一種數(shù)據(jù)一致狀態(tài)轉(zhuǎn)換到另一種數(shù)據(jù)一致狀態(tài)。3. 隔離性事務(wù)是一個隔離單元,允許可并行執(zhí)行的事務(wù)表現(xiàn)得像是在系統(tǒng)中運(yùn)行的唯一事務(wù)。隔離性要求即使同時可能有其他事務(wù)正在運(yùn)行,每個事務(wù)也像是操作數(shù)據(jù)存儲區(qū)的唯一事務(wù)一樣。事務(wù)應(yīng)從不查看其他事務(wù)的中間(zhngjin)階段。4. 持續(xù)性事務(wù)也是一個恢復(fù)單元。如果事務(wù)成功,則即使在提交后計算機(jī)立即崩潰,系統(tǒng)仍將保證更新該事務(wù)。專用記錄允許系統(tǒng)的重新啟動過程完成未完成的操作,以使事務(wù)可持續(xù)。第1頁/共33頁第一頁,共34頁。10.1 事務(wù)處理10.1.3 Delphi中事務(wù)

2、控制的方式1. Delphi中事務(wù)控制的方式Delphi中事務(wù)控制的方式有兩種:一種是隱式事務(wù)控制,一種是顯式事務(wù)控制。在默認(rèn)情況下,Delphi通過ADO為應(yīng)用程序提供隱式事務(wù)控制。當(dāng)應(yīng)用程序處于隱式事務(wù)控制時,Delphi為數(shù)據(jù)集中的每個記錄的寫操作進(jìn)行隱式事務(wù)控制。它提交每一個獨(dú)立的寫操作,如Post和AppendRecord。有兩種顯式控制事務(wù)方式:一種是使用Delphi組件(如TADOConnection)所提供的方法和屬性進(jìn)行事務(wù)控制。另一種是直接發(fā)送SQL命令到支持(zhch)事務(wù)的數(shù)據(jù)庫服務(wù)器進(jìn)行事務(wù)控制。許多數(shù)據(jù)庫都提供自己的事務(wù)處理方式。第2頁/共33頁第二頁,共34頁。1

3、0.1 事務(wù)處理2. 使用TADOConnection控制事務(wù)(1) 事務(wù)處理過程通常事務(wù)處理有以下這樣一個過程:BeginTrans; /開始(kish)一個新事務(wù)處理 try /捕捉異常 . 數(shù)據(jù)庫更新操作(如delete、insert、update等) . . CommitTrans;/操作成功,提交事務(wù) except /異常處理 RollBackTrans;/操作失敗,回退事務(wù)end;第3頁/共33頁第三頁,共34頁。10.1 事務(wù)處理(2) 開始一個事務(wù)(shw)開始一個事務(wù)(shw)使用BeginTrans方法。當(dāng)開始一個事務(wù)(shw)時,后來的所有讀寫數(shù)據(jù)庫的操作都發(fā)生在那次事務(wù)

4、(shw)的環(huán)境中,直到事務(wù)(shw)被明確地終止或提交了新事務(wù)(shw)。 使用例句:Level := ADOConnection1.BeginTrans;BeginTrans方法返回該事務(wù)(shw)的嵌套級別。 (3) 提交一個事務(wù)(shw)為了做永久性修改,事務(wù)(shw)完成后必須使用CommitTrans方法提交。 例如,下列語句將終止在上例中開始的事務(wù)(shw):ADOConnection1.CommitTrans(4) 回退一個事務(wù)(shw)為了取消對數(shù)據(jù)庫的修改,必須用RollbackTrans方法回退一個事務(wù)(shw)。第4頁/共33頁第四頁,共34頁。10.1 事務(wù)處理例如(

5、lr):下列語句將回退一個事務(wù):ADOConnection1.RollbackTrans;(5) 判斷是否正在處理事務(wù)判斷是否正在處理事務(wù),可以通過InTransaction屬性。例:IF ADOConnection1.InTransaction THENADOConnection1.RollbackTrans;(6) 使用IsolationLevel屬性IsolationLevel屬性描述TADOConnection組件事務(wù)的獨(dú)立級別,事務(wù)的獨(dú)立級別決定了事務(wù)與其它作用于相同表的事務(wù)是如何相互作用的。第5頁/共33頁第五頁,共34頁。10.1 事務(wù)處理10.1.4 事務(wù)處理的實例下面以一個簡

6、單的例子說明事務(wù)的處理過程?!纠?0-1】Delphi對TDBGrid組件使用的是默認(rèn)的隱含事務(wù)控制,在表格修改一條記錄后,當(dāng)記錄指針(zhzhn)移動以后,數(shù)據(jù)就被寫入到數(shù)據(jù)庫中了。若表格很大、修改項目又很多時,如果中途想要放棄所作的修改,很難使表格恢復(fù)原樣。這時就可以使用事務(wù)處理來解決這樣的問題。編程實現(xiàn)對數(shù)據(jù)庫dbdemos.mdb的表employee的事務(wù)操作?!緦崿F(xiàn)步驟】1. 首先建立應(yīng)用程序。2. 定制窗體第6頁/共33頁第六頁,共34頁。10.1 事務(wù)處理圖10-1 程序設(shè)計(chn x sh j)界面第7頁/共33頁第七頁,共34頁。10.1 事務(wù)處理組件名屬 性屬 性 值說

7、明ADOConnection1ConnectionString使用ConnectionString設(shè)置對話框設(shè)置該屬性,連接到數(shù)據(jù)庫dbdemos.mdb。ADOTable1ConnectionADOConnection1指定使用的數(shù)據(jù)連接組件。TableNameemployee指定打開的數(shù)據(jù)表名ActiveTrue打開數(shù)據(jù)集。DataSource1DataSetADOTable1指定使用的數(shù)據(jù)集。DBGrid1DataSourceDataSource1為表格指定數(shù)據(jù)源。ReadOnlyTrue表格設(shè)置為只讀btnBeginCaption開始事務(wù)EnableTrue允許使用按鈕btnCommi

8、tCaption提交事務(wù)EnableFalse禁止使用按鈕btnRollBackCaption回退事務(wù)EnableFalse禁止使用按鈕btnCloseCaption關(guān)閉EnableTrue允許使用按鈕表10-2 各組件屬性(shxng)設(shè)置第8頁/共33頁第八頁,共34頁。10.1 事務(wù)處理3. 編寫代碼4. 程序(chngx)執(zhí)行分析啟動程序(chngx)后,點(diǎn)擊【開始事務(wù)】按鈕,在表格中修改幾條記錄,然后點(diǎn)擊【提交事務(wù)】按鈕,關(guān)閉程序(chngx)后重新進(jìn)入,會發(fā)現(xiàn)修改內(nèi)容已寫入數(shù)據(jù)庫中。點(diǎn)擊【開始事務(wù)】按鈕,在表格中修改幾條記錄,然后點(diǎn)擊【回退事務(wù)】按鈕,關(guān)閉程序(chngx)后重新進(jìn)

9、入,再次查看表格內(nèi)容,會發(fā)現(xiàn)數(shù)據(jù)庫沒有被修改。 第9頁/共33頁第九頁,共34頁。10.2 使用(shyng)存儲過程10.2.1 存儲過程(guchng)概述存儲過程(guchng)(stored procedure)是一組預(yù)先編譯好的SQL代碼。存儲過程(guchng)作為一個獨(dú)立的數(shù)據(jù)庫對象,可以作為一個單元被用戶的應(yīng)用程序調(diào)用,它在服務(wù)器上執(zhí)行一系列重復(fù)性的與數(shù)據(jù)庫相關(guān)的任務(wù),并將結(jié)果傳給客戶應(yīng)用程序。由于存儲過程(guchng)是已經(jīng)編譯好的代碼,所以執(zhí)行的時候不必再次進(jìn)行編譯,從而提高了程序的運(yùn)行效率。10.2.2 直接執(zhí)行SQL命令來使用和管理存儲過程(guchng)1. 使用和

10、管理存儲過程(guchng)的應(yīng)用程序【例10-2】建立一個使用和管理存儲過程(guchng)的應(yīng)用程序。使用MS SQL Server的示例數(shù)據(jù)庫PUBS。 第10頁/共33頁第十頁,共34頁。10.2 使用(shyng)存儲過程【實現(xiàn)步驟】(1) 首先(shuxin)建立應(yīng)用程序。(2) 定制窗體圖10-2 程序設(shè)計(chn x sh j)界面第11頁/共33頁第十一頁,共34頁。10.2 使用存儲(cn ch)過程組件名屬 性屬 性 值說 明ADOConnection1ConnectionString使用ConnectionString設(shè)置對話框設(shè)置該屬性,建立到數(shù)據(jù)庫dbdemos.m

11、db的連接。ADOQuery1ConnectionADOConnection1指定使用的數(shù)據(jù)連接組件。DataSource1DataSetADOQuery1指定使用的數(shù)據(jù)集。DBGrid1DataSourceDataSource1為表格指定數(shù)據(jù)源。ReadOnlyTrue設(shè)置為只讀Button1Caption新建存儲過程、修改存儲過程、刪除存儲過程Button2Caption執(zhí)行存儲過程Memo1Lines為空Label1Caption輸入SQL命令Label2Caption顯示存儲過程執(zhí)行結(jié)果表10-3 各組件(z jin)屬性設(shè)置第12頁/共33頁第十二頁,共34頁。10.2 使用存儲(c

12、n ch)過程表10-3 各組件(z jin)屬性設(shè)置第13頁/共33頁第十三頁,共34頁。10.2 使用存儲(cn ch)過程2. 使用和管理存儲過程(guchng)的SQL命令(1) 創(chuàng)建存儲過程(guchng)創(chuàng)建存儲過程(guchng)的簡單語法如下:CREATE PROCEDURE procedure_name ;number parameter data_type VARYING =default OUTPUT ,.n WITH RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION FOR REPLICATION AS sql_statemen

13、t .n 第14頁/共33頁第十四頁,共34頁。10.2 使用(shyng)存儲過程(2) 執(zhí)行存儲過程直接執(zhí)行存儲過程可以使用(shyng)EXECUTE命令來執(zhí)行。在Memo1的編輯框中輸入:EXEC oakland_authors 或EXECUTE oakland_authors點(diǎn)擊按鈕“執(zhí)行存儲過程”以執(zhí)行存儲過程oakland_authors,結(jié)果將顯示在DBGrid1表格中。(3) 修改存儲過程存儲過程可以根據(jù)用戶的要求或者基表定義的改變而改變。使用(shyng)ALTER PROCEDURE語句可以更改先前通過執(zhí)行 CREATE PROCEDURE 語句創(chuàng)建的過程,但不會更改權(quán)限

14、,也不影響相關(guān)的存儲過程或觸發(fā)器。 第15頁/共33頁第十五頁,共34頁。10.2 使用存儲(cn ch)過程其語法形式如下:ALTERPROCEDUREprocedure_name;number parameterdata_type VARYING=defaultOUTPUT,.n WITH RECOMPILE | ENCRYPTION | ECOMPILE,ENCRYPTION FOR REPLICATION AS sql_statement .n 下面對存儲過程oakland_authors進(jìn)行修改,使其能夠顯示(xinsh)出所有居住在加里福尼亞的作者,而不考慮其它地區(qū)居住的作者 。第

15、16頁/共33頁第十六頁,共34頁。10.2 使用(shyng)存儲過程修改存儲過程的代碼如下:alter procedure oakland_authorswith encryptionasselect au_fname, au_lname, address, city, zipfrom authorswhere state = caorder by au_lname, au_fname (4) 刪除存儲過程刪除存儲過程可以使用DROP命令,DROP命令可以將一個(y )或者多個存儲過程或者存儲過程組從當(dāng)前數(shù)據(jù)庫中刪除,其語法形式如下:drop procedure procedure ,n第

16、17頁/共33頁第十七頁,共34頁。10.2 使用存儲(cn ch)過程如將存儲過程oakland_authors從數(shù)據(jù)庫中刪除,則在Memo1的編輯框中輸入(shr)以下代碼: drop procedure oakland_authors(5) 帶參數(shù)的存儲過程存儲過程使用兩種類型的參數(shù),一種是輸入(shr)參數(shù),另一種是輸出參數(shù)。不使用OUTPUT保留字的參數(shù)是輸入(shr)參數(shù),使用OUTPUT保留字的參數(shù)是輸出參數(shù)。輸入(shr)參數(shù)是單向的,而輸出參數(shù)是雙向的,可以向調(diào)用者返回值。本例的存儲過程中使用了輸入(shr)參數(shù)。create procedure author_infor l

17、astname varchar (40) , firstname varchar (20)asselect au_lname,au_fname,phonefrom authorswhere au_fname=firstname and au_lname=lastname第18頁/共33頁第十八頁,共34頁。10.2 使用(shyng)存儲過程10.2.3 用ADO組件(z jin)操作存儲過程1. TADOStoredProc組件(z jin)簡介TADOStoredProc組件(z jin)主要用于操作遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫中的存儲過程。ADOStoredProc是一個數(shù)據(jù)集組件(z jin)

18、,ADO數(shù)據(jù)集組件(z jin)所具有的公共屬性、方法和事件,在ADOStoredProc都具有。(1) TADOSoredProc的關(guān)鍵屬性 Active屬性Connection屬性ConnectionString屬性Filter屬性Filtered屬性Parameters屬性ProcedureName屬性第19頁/共33頁第十九頁,共34頁。10.2 使用(shyng)存儲過程(2) 關(guān)鍵方法Open屬性Close屬性Refresh屬性NextRecordset屬性2. TADOStoredProc組件的使用【例10-3】建立一個使用和管理存儲(cn ch)過程的應(yīng)用程序。使用MS SQL

19、 Server的示例數(shù)據(jù)庫PUBS。 【實現(xiàn)步驟】(1) 首先建立應(yīng)用程序。(2) 定制窗體第20頁/共33頁第二十頁,共34頁。10.2 使用存儲(cn ch)過程圖10-5 程序設(shè)計(chn x sh j)界面第21頁/共33頁第二十一頁,共34頁。10.2 使用(shyng)存儲過程組件名屬 性屬 性 值說 明ADOConnection1ConnectionString使用ConnectionString設(shè)置對話框設(shè)置該屬性,連接到數(shù)據(jù)庫Pubs。ADOStoredProc1ConnectionADOConnection1指定使用的數(shù)據(jù)連接組件。ProcedureNameauthor_i

20、nfor;1指定使用的存儲過程名DataSource1DataSetADOStoredProc1指定使用的數(shù)據(jù)集。DBGrid1DataSourceDataSource1為表格指定數(shù)據(jù)源。ReadOnlyTrue設(shè)置為只讀Button1Caption執(zhí)行存儲過程Gropbox1Caption傳入?yún)?shù)Label1CaptionLastNameLabel2CaptionFirstNameEdit1Text為空Edit2Text為空表10-4 各組件屬性(shxng)設(shè)置第22頁/共33頁第二十二頁,共34頁。10.2 使用存儲(cn ch)過程(3) 編寫(binxi)代碼(4)運(yùn)行程序圖10-6

21、 執(zhí)行(zhxng)結(jié)果第23頁/共33頁第二十三頁,共34頁。10.3 主從(zhcng)結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序有時我們需要將數(shù)據(jù)表格聯(lián)系起來,這些表格具一種一對多的關(guān)系。比如客戶表和訂單表,一個客戶可能會有許多訂單。當(dāng)我們?yōu)g覽(li ln)客戶訂貨信息時,希望在客戶表選擇一個客戶后,能夠顯示該客戶的所有訂單。利用Delphi可以方便地設(shè)計出主從表結(jié)構(gòu)的應(yīng)用程序。【例10-4】使用Delphi自帶的Access數(shù)據(jù)庫dbdemos.mdb中的表customer和表Orders建立一個程序,實現(xiàn)主/從表。customer為主表,Orders為從表,兩表之間通過字段CustNo鏈接。 【實現(xiàn)步驟】

22、(1) 首先建立應(yīng)用程序。(2) 創(chuàng)建數(shù)據(jù)模塊第24頁/共33頁第二十四頁,共34頁。10.3 主從(zhcng)結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序圖10-7 數(shù)據(jù)模塊設(shè)計(shj)界面第25頁/共33頁第二十五頁,共34頁。10.3 主從(zhcng)結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序組件名屬 性屬 性 值說 明ADOConnection1ConnectionString使用ConnectionString設(shè)置對話框設(shè)置該屬性,連接到數(shù)據(jù)庫dbdemos.mdb。ADOTable1ConnectionADOConnection1指定使用的數(shù)據(jù)連接組件。TableNameCuctomer指定打開的數(shù)據(jù)表名ActiveTr

23、ue打開數(shù)據(jù)集。DataSource1DataSetADOTable1指定使用的數(shù)據(jù)集。ADOTable2ConnectionADOConnection1指定使用的數(shù)據(jù)連接組件。TableNameOrders指定打開的數(shù)據(jù)表名MasterSourceDataSource1指定主表數(shù)據(jù)源MasterFieldsCustNo設(shè)置主從表之間的關(guān)聯(lián)字段ActiveTrue打開數(shù)據(jù)集。DataSource2DataSetADOTable2表10-5 數(shù)據(jù)模塊各組件屬性(shxng)設(shè)置第26頁/共33頁第二十六頁,共34頁。10.3 主從(zhcng)結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序圖10-8 鏈接(lin ji)字段設(shè)計器第27頁/共33頁第二十七頁,共34頁。10.3 主從(zhcng)結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序圖10-9 引用(ynyng)單元對

溫馨提示

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

評論

0/150

提交評論