2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩33頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第10章 數(shù)據(jù)庫(kù)高級(jí)應(yīng)用技術(shù),本章主要內(nèi)容: 事務(wù)的概念 Delphi中的事務(wù)控制 Delphi中使用存儲(chǔ)過程 主從結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序,10.1 事務(wù)處理,10.1.1 事務(wù)的概念   當(dāng)用Delphi創(chuàng)建數(shù)據(jù)庫(kù)應(yīng)用時(shí),Delphi提供了用于所有數(shù)據(jù)庫(kù)訪問的事務(wù)控制?! ∫粋€(gè)事務(wù)(transaction)是指在一個(gè)數(shù)據(jù)庫(kù)中的一張或多張表上執(zhí)行的一組相關(guān)動(dòng)作,在這一組動(dòng)作被永久提交前,必須成功完成所有動(dòng)作,如果該組動(dòng)作中

2、有一個(gè)動(dòng)作操作失敗,那么所有動(dòng)作就會(huì)被取消。 10.1.2 事務(wù)的特性  事務(wù)具有不可分性、一致性、隔離性和持續(xù)性。 1. 不可分性  事務(wù)是一個(gè)工作單元,是在應(yīng)用程序的 BEGIN TRANSACTION 和 END TRANSACTION 語(yǔ)句之間發(fā)生一系列操作。事務(wù)只執(zhí)行一次,且是不可分的,即完成全部工作或者不做任何工作。,10.1 事務(wù)處理,2. 一致性  事務(wù)是一個(gè)完整的單元,因?yàn)樗3謹(jǐn)?shù)據(jù)的一致性,將數(shù)據(jù)從一種數(shù)

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

4、務(wù)處理,10.1.3 Delphi中事務(wù)控制的方式1. Delphi中事務(wù)控制的方式  Delphi中事務(wù)控制的方式有兩種:一種是隱式事務(wù)控制,一種是顯式事務(wù)控制?! ≡谀J(rèn)情況下,Delphi通過ADO為應(yīng)用程序提供隱式事務(wù)控制。當(dāng)應(yīng)用程序處于隱式事務(wù)控制時(shí),Delphi為數(shù)據(jù)集中的每個(gè)記錄的寫操作進(jìn)行隱式事務(wù)控制。它提交每一個(gè)獨(dú)立的寫操作,如Post和AppendRecord?! ∮袃煞N顯式控制事務(wù)方式:  一種是使用De

5、lphi組件(如TADOConnection)所提供的方法和屬性進(jìn)行事務(wù)控制?! ×硪环N是直接發(fā)送SQL命令到支持事務(wù)的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行事務(wù)控制。許多數(shù)據(jù)庫(kù)都提供自己的事務(wù)處理方式。,10.1 事務(wù)處理,2. 使用TADOConnection控制事務(wù) ?。?) 事務(wù)處理過程  通常事務(wù)處理有以下這樣一個(gè)過程:BeginTrans; //開始一個(gè)新事務(wù)處理 try //捕捉異常 . 數(shù)據(jù)庫(kù)更新操作(如de

6、lete、insert、update等) . . CommitTrans;//操作成功,提交事務(wù) except //異常處理 RollBackTrans;//操作失敗,回退事務(wù)end;,10.1 事務(wù)處理,(2) 開始一個(gè)事務(wù)  開始一個(gè)事務(wù)使用BeginTrans方法。當(dāng)開始一個(gè)事務(wù)時(shí),后來的所有讀寫數(shù)據(jù)庫(kù)的操作都發(fā)生在那次事務(wù)的環(huán)境中,直到事務(wù)被明確地終止或提交了新事務(wù)。 使用例句:Lev

7、el := ADOConnection1.BeginTrans;BeginTrans方法返回該事務(wù)的嵌套級(jí)別。   (3) 提交一個(gè)事務(wù)  為了做永久性修改,事務(wù)完成后必須使用CommitTrans方法提交。 例如,下列語(yǔ)句將終止在上例中開始的事務(wù):ADOConnection1.CommitTrans  (4) 回退一個(gè)事務(wù)  為了取消對(duì)數(shù)據(jù)庫(kù)的修改,必須用RollbackTrans方法回退一個(gè)事務(wù)。,10.1 事務(wù)處理

8、,例如:下列語(yǔ)句將回退一個(gè)事務(wù):  ADOConnection1.RollbackTrans;  (5) 判斷是否正在處理事務(wù)  判斷是否正在處理事務(wù),可以通過InTransaction屬性。例:IF ADOConnection1.InTransaction THENADOConnection1.RollbackTrans; ?。?) 使用IsolationLevel屬性  IsolationLevel屬性描述TADO

9、Connection組件事務(wù)的獨(dú)立級(jí)別,事務(wù)的獨(dú)立級(jí)別決定了事務(wù)與其它作用于相同表的事務(wù)是如何相互作用的。,10.1 事務(wù)處理,10.1.4 事務(wù)處理的實(shí)例  下面以一個(gè)簡(jiǎn)單的例子說明事務(wù)的處理過程。【例10-1】  Delphi對(duì)TDBGrid組件使用的是默認(rèn)的隱含事務(wù)控制,在表格修改一條記錄后,當(dāng)記錄指針移動(dòng)以后,數(shù)據(jù)就被寫入到數(shù)據(jù)庫(kù)中了。若表格很大、修改項(xiàng)目又很多時(shí),如果中途想要放棄所作的修改,很難使表格恢復(fù)原樣。這時(shí)就可

10、以使用事務(wù)處理來解決這樣的問題。編程實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)dbdemos.mdb的表employee的事務(wù)操作?!緦?shí)現(xiàn)步驟】1. 首先建立應(yīng)用程序。2. 定制窗體,10.1 事務(wù)處理,圖10-1 程序設(shè)計(jì)界面,10.1 事務(wù)處理,表10-2 各組件屬性設(shè)置,10.1 事務(wù)處理,3. 編寫代碼4. 程序執(zhí)行分析  啟動(dòng)程序后,點(diǎn)擊【開始事務(wù)】按鈕,在表格中修改幾條記錄,然后點(diǎn)擊【提交事務(wù)】按鈕,關(guān)閉程序后重新進(jìn)入,會(huì)發(fā)現(xiàn)修改內(nèi)容已寫

11、入數(shù)據(jù)庫(kù)中。點(diǎn)擊【開始事務(wù)】按鈕,在表格中修改幾條記錄,然后點(diǎn)擊【回退事務(wù)】按鈕,關(guān)閉程序后重新進(jìn)入,再次查看表格內(nèi)容,會(huì)發(fā)現(xiàn)數(shù)據(jù)庫(kù)沒有被修改。,10.2 使用存儲(chǔ)過程,10.2.1 存儲(chǔ)過程概述  存儲(chǔ)過程(stored procedure)是一組預(yù)先編譯好的SQL代碼。存儲(chǔ)過程作為一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)對(duì)象,可以作為一個(gè)單元被用戶的應(yīng)用程序調(diào)用,它在服務(wù)器上執(zhí)行一系列重復(fù)性的與數(shù)據(jù)庫(kù)相關(guān)的任務(wù),并將結(jié)果傳給客戶應(yīng)用程序。由于存儲(chǔ)過程

12、是已經(jīng)編譯好的代碼,所以執(zhí)行的時(shí)候不必再次進(jìn)行編譯,從而提高了程序的運(yùn)行效率。10.2.2 直接執(zhí)行SQL命令來使用和管理存儲(chǔ)過程1. 使用和管理存儲(chǔ)過程的應(yīng)用程序【例10-2】  建立一個(gè)使用和管理存儲(chǔ)過程的應(yīng)用程序。使用MS SQL Server的示例數(shù)據(jù)庫(kù)PUBS。,10.2 使用存儲(chǔ)過程,【實(shí)現(xiàn)步驟】(1) 首先建立應(yīng)用程序。(2) 定制窗體,圖10-2 程序設(shè)計(jì)界面,10.2 使用存儲(chǔ)過程,表10-3 各組件屬

13、性設(shè)置,10.2 使用存儲(chǔ)過程,表10-3 各組件屬性設(shè)置,10.2 使用存儲(chǔ)過程,2. 使用和管理存儲(chǔ)過程的SQL命令(1) 創(chuàng)建存儲(chǔ)過程創(chuàng)建存儲(chǔ)過程的簡(jiǎn)單語(yǔ)法如下:CREATE PROC[EDURE] procedure_name [;number] [{@parameter data_type} [VARYING] [=default] [OUTPUT] ][,...n] [WITH  

14、0; {RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION} ] [FOR REPLICATION] AS sql_statement [ ...n ],10.2 使用存儲(chǔ)過程,(2) 執(zhí)行存儲(chǔ)過程  直接執(zhí)行存儲(chǔ)過程可以使用EXECUTE命令來執(zhí)行。在Memo1的編輯框中輸入:EXEC oakland_authors 或EXECUTE oakland_authors 

15、 點(diǎn)擊按鈕“執(zhí)行存儲(chǔ)過程”以執(zhí)行存儲(chǔ)過程oakland_authors,結(jié)果將顯示在DBGrid1表格中。(3) 修改存儲(chǔ)過程存儲(chǔ)過程可以根據(jù)用戶的要求或者基表定義的改變而改變。使用ALTER PROCEDURE語(yǔ)句可以更改先前通過執(zhí)行 CREATE PROCEDURE 語(yǔ)句創(chuàng)建的過程,但不會(huì)更改權(quán)限,也不影響相關(guān)的存儲(chǔ)過程或觸發(fā)器。,10.2 使用存儲(chǔ)過程,其語(yǔ)法形式如下:ALTERPROC[EDURE]procedure_n

16、ame[;number] [{@parameterdata_type} [VARYING][=default][OUTPUT]][,...n] [ WITH    {RECOMPILE | ENCRYPTION | ECOMPILE,ENCRYPTION} ][FOR REPLICATION] AS    sql_statement [ ...n

17、 ] 下面對(duì)存儲(chǔ)過程oakland_authors進(jìn)行修改,使其能夠顯示出所有居住在加里福尼亞的作者,而不考慮其它地區(qū)居住的作者 。,10.2 使用存儲(chǔ)過程,修改存儲(chǔ)過程的代碼如下:alter procedure oakland_authorswith encryptionasselect au_fname, au_lname, address, city, zipfrom authorswhere state =

18、'ca'order by au_lname, au_fname ?。?) 刪除存儲(chǔ)過程  刪除存儲(chǔ)過程可以使用DROP命令,DROP命令可以將一個(gè)或者多個(gè)存儲(chǔ)過程或者存儲(chǔ)過程組從當(dāng)前數(shù)據(jù)庫(kù)中刪除,其語(yǔ)法形式如下:drop procedure {procedure} [,…n],10.2 使用存儲(chǔ)過程,如將存儲(chǔ)過程oakland_authors從數(shù)據(jù)庫(kù)中刪除,則在Memo1的編輯框中輸入以下代碼:  dr

19、op procedure oakland_authors ?。?) 帶參數(shù)的存儲(chǔ)過程  存儲(chǔ)過程使用兩種類型的參數(shù),一種是輸入?yún)?shù),另一種是輸出參數(shù)。不使用OUTPUT保留字的參數(shù)是輸入?yún)?shù),使用OUTPUT保留字的參數(shù)是輸出參數(shù)。輸入?yún)?shù)是單向的,而輸出參數(shù)是雙向的,可以向調(diào)用者返回值。本例的存儲(chǔ)過程中使用了輸入?yún)?shù)。create procedure author_infor @lastname varchar (

20、40) , @firstname varchar (20)asselect au_lname,au_fname,phonefrom authorswhere au_fname=@firstname and au_lname=@lastname,10.2 使用存儲(chǔ)過程,10.2.3 用ADO組件操作存儲(chǔ)過程1. TADOStoredProc組件簡(jiǎn)介  TADOStoredProc組件主要用于操作遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫(kù)中的存儲(chǔ)過

21、程。ADOStoredProc是一個(gè)數(shù)據(jù)集組件,ADO數(shù)據(jù)集組件所具有的公共屬性、方法和事件,在ADOStoredProc都具有?! 。?) TADOSoredProc的關(guān)鍵屬性  Active屬性 Connection屬性 ConnectionString屬性 Filter屬性 Filtered屬性 Parameters屬性 ProcedureName屬性,10.2 使用存儲(chǔ)過程,(2) 關(guān)鍵方法 Open屬性 

22、Close屬性 Refresh屬性 NextRecordset屬性2. TADOStoredProc組件的使用【例10-3】  建立一個(gè)使用和管理存儲(chǔ)過程的應(yīng)用程序。使用MS SQL Server的示例數(shù)據(jù)庫(kù)PUBS。 【實(shí)現(xiàn)步驟】(1) 首先建立應(yīng)用程序。(2) 定制窗體,10.2 使用存儲(chǔ)過程,圖10-5 程序設(shè)計(jì)界面,10.2 使用存儲(chǔ)過程,表10-4 各組件屬性設(shè)置,10.2 使用存儲(chǔ)過程,(3) 編寫代碼

23、(4)運(yùn)行程序,圖10-6 執(zhí)行結(jié)果,10.3 主從結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序,有時(shí)我們需要將數(shù)據(jù)表格聯(lián)系起來,這些表格具一種一對(duì)多的關(guān)系。比如客戶表和訂單表,一個(gè)客戶可能會(huì)有許多訂單。當(dāng)我們?yōu)g覽客戶訂貨信息時(shí),希望在客戶表選擇一個(gè)客戶后,能夠顯示該客戶的所有訂單。利用Delphi可以方便地設(shè)計(jì)出主從表結(jié)構(gòu)的應(yīng)用程序?!纠?0-4】  使用Delphi自帶的Access數(shù)據(jù)庫(kù)dbdemos.mdb中的表customer和表Order

24、s建立一個(gè)程序,實(shí)現(xiàn)主/從表。customer為主表,Orders為從表,兩表之間通過字段CustNo鏈接。 【實(shí)現(xiàn)步驟】(1) 首先建立應(yīng)用程序。(2) 創(chuàng)建數(shù)據(jù)模塊,10.3 主從結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序,圖10-7 數(shù)據(jù)模塊設(shè)計(jì)界面,10.3 主從結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序,表10-5 數(shù)據(jù)模塊各組件屬性設(shè)置,10.3 主從結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序,圖10-8 鏈接字段設(shè)計(jì)器,10.3 主從結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序,圖10-9

25、引用單元對(duì)話框,10.3 主從結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序,(4)定制窗體,程序設(shè)計(jì)界面,10.3 主從結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序,表10-6 窗體中各組件屬性設(shè),10.3 主從結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用程序,圖10-10 主/從表關(guān)系的應(yīng)用程序運(yùn)行界面,(5)保存所有文件,然后運(yùn)行程序,本章實(shí)訓(xùn)指導(dǎo),1. 掌握事務(wù)處理的應(yīng)用程序的編寫。2. 掌握直接用SQL命令管理和執(zhí)行存儲(chǔ)過程。3. 掌握使用TADOStoredProc組件執(zhí)行存儲(chǔ)過程。4.

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論