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頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

會計學(xué)1Delphi數(shù)據(jù)庫高級應(yīng)用技術(shù)10.1

事務(wù)處理第1頁/共33頁2.一致性事務(wù)是一個完整的單元,因為它保持?jǐn)?shù)據(jù)的一致性,將數(shù)據(jù)從一種數(shù)據(jù)一致狀態(tài)轉(zhuǎn)換到另一種數(shù)據(jù)一致狀態(tài)。隔離事務(wù)是一個隔離單元,允許可并行執(zhí)行的事務(wù)表現(xiàn)得像是在系統(tǒng)中運(yùn)行的唯一事務(wù)。隔離性要求即使同時可能有其他事務(wù)正在運(yùn)行,每個事務(wù)也像是操作數(shù)據(jù)存儲區(qū)的唯一事務(wù)一樣。事務(wù)應(yīng)從不查看其他事務(wù)的中間階段。性.3

持續(xù)事務(wù)也是一個恢復(fù)單元。如果事務(wù)成功,則即使在提交后計算機(jī)立即崩潰,系統(tǒng)仍將保證更新該事務(wù)。專用記錄允許系統(tǒng)的重新啟動過程完成未完成的操作,以使事務(wù)可持續(xù)。性.410.1

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

事務(wù)處理第3頁/共33頁2.使用控TADOConnection(制1)事務(wù)處理過程通常事務(wù)處理有以下這樣一個過程:開eginTrans;///try/B捕始捉一異個常新事務(wù)處理數(shù)據(jù)庫更新操作(如、、等)etadputresnieteled..

操作成功,提交事務(wù)//;snarTtimmoC.異xcept//s//;RollBackTrane操常作處失理敗,回退事務(wù)end;10.1

事務(wù)處理第4頁/共33頁(開)2始開一始個一事個務(wù)事使務(wù)用BeginTrans方法。當(dāng)開始一個事務(wù)時,后來的所有讀寫數(shù)據(jù)庫的操作都發(fā)生在那次事務(wù)的環(huán)境中使,用直例到句:事務(wù)被明確地終止或提交了新事務(wù)。(3)提交一個事務(wù)OConnection1.BeginTransDBeginTransL;evel:=A方法返回該事務(wù)的嵌套級別。tTransCADOConnection1.ommi例如,下列語句將終止在上例中開始的事務(wù):為了做永久性修改,事務(wù)完成后必須使用CommitTrans方法提交。(為)4了回取退消一對個數(shù)事?lián)?wù)庫的修改,必須用RollbackTrans方法回退一個事務(wù)。10.1

事務(wù)處理第5頁/共33頁eRollrback.ans;ADOConnTction1例如:下列語句將回退一個事務(wù):ckTrans;ennoCODAticon1.Rollba(判)5斷判是斷否是正否在正處在理處事理務(wù)事,務(wù)可以通過InTransaction屬性。

例:itennoCODAFIcNEHTnoitcasnarTnI.1no()使用屬性leveLnoialIsto6IsolationLevel屬性描述TADOConnection組件事務(wù)的獨(dú)立級別,事務(wù)的獨(dú)立級別決定了事務(wù)與其它作用于相同表的事務(wù)是如何相互作用的。10.1

事務(wù)處理第6頁/共33頁1100.下.1面1.以.4一4事個簡務(wù)單的處例子理說明的事務(wù)實的處例理過程?!尽緦嵗F(xiàn)對步組驟件】使用的是默認(rèn)的隱含事務(wù)控制,在表格修改一條記錄后,當(dāng)記錄指針移動以后,數(shù)據(jù)就被寫入到數(shù)據(jù)庫中了。若表格很大、修改項目又很多時,如果中途想要放棄所作的修改,很難使表格恢復(fù)原樣。這時就可以使用事務(wù)處理來解決這樣的問題。編程實現(xiàn)對數(shù)據(jù)庫的表的事務(wù)操作。eeyolpmebdm.somedbddirGBDTihpleD1-01】首先建立應(yīng)用程序。.12.定制窗體10.1

事務(wù)處理圖10-1程序設(shè)計界面第7頁/共33頁10.1

事務(wù)處理表10-2各組件屬性設(shè)置組件名屬性屬性值說明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允許使用按鈕btnCommitCaption提交事務(wù)EnableFalse禁止使用按鈕btnRollBackCaption回退事務(wù)EnableFalse禁止使用按鈕btnCloseCaption關(guān)第閉8頁/共33頁EnableTrue允許使用按鈕10.1

事務(wù)處理編3.4.程寫序啟動代執(zhí)碼行程分序析后,點(diǎn)擊【開始事務(wù)】按鈕,在表格中修改幾條記錄,然后點(diǎn)擊【提交事務(wù)】按鈕,關(guān)閉程序后重新進(jìn)入,會發(fā)現(xiàn)修改內(nèi)容已寫入數(shù)據(jù)庫中。點(diǎn)擊【開始事務(wù)】按鈕,在表格中修改幾條記錄,然后點(diǎn)擊【回退事務(wù)】按鈕,關(guān)閉程序后重新進(jìn)入,再次查看表格內(nèi)容,會發(fā)現(xiàn)數(shù)據(jù)庫沒有被修改。第9頁/共33頁10.2

使用存儲過程第10頁/共33頁1100.存.2儲2.過.1程1存()dureostredproce儲是一過組預(yù)程先編概譯好述的SQL代碼。存儲過程作為一個獨(dú)立的數(shù)據(jù)庫對象,可以作為一個單元被用戶的應(yīng)用程序調(diào)用,它在服務(wù)器上執(zhí)行一系列重復(fù)性的與數(shù)據(jù)庫相關(guān)的任務(wù),并將結(jié)果傳給客戶應(yīng)用程序。由于存儲過程是已經(jīng)編譯好的代碼,所以執(zhí)行的時候不必再次進(jìn)行編譯,從而提高了程序的運(yùn)行效率。1100..22..22直存理管和用.1使儲接過程執(zhí)的應(yīng)行用程SSQQLL命序令來使用和管理存儲過程【例建立一個使用和管理存儲過程的應(yīng)用程序。使用的示例數(shù)據(jù)庫。SBUPrevreSLQSSM2-01】10.2

使用存儲過程【(實1)現(xiàn)首步先驟建】立應(yīng)用程序。(2)定制窗體圖10-2程序設(shè)計界面第11頁/共33頁10.2

使用存儲過程第12頁/共33頁組件名屬性屬性值說明ADOConnection1ConnectionString使用ConnectionString設(shè)置對話框設(shè)置該屬性,建立到數(shù)據(jù)庫dbdemos.mdb的連

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

使用存儲過程第13頁/共33頁表10-3各組件屬性設(shè)置10.2

使用存儲過程第14頁/共33頁2.使用和管理存儲過程的SQL命令(創(chuàng))1建創(chuàng)存建儲存過儲程過的程簡單語法如下:]n...,[]]TUPTUO[]tluafed=[]GNIYRAV[}epyt_atadretemarap@{[]rebmun;[eman_erudecorp]ERUDE[CORPETAERC]}NOITPYRCNE,ELIPMOCER|NOITPYRCNE|ELIPMOCER{HTIW[

SA]NOITACILPERROF[sql_statement[...n]10.2

使用存儲過程第15頁/共33頁(2)執(zhí)直行接存執(zhí)儲行過存程儲過程可以使用EXECUTE命令來執(zhí)行。在Memo1的編輯框中輸入:EXECoakland_authors點(diǎn)擊按鈕“執(zhí)行存儲過程”以執(zhí)行存儲過程akland_authorso,結(jié)果將顯示在BDGrid1表格中。

或and_auathorsEXECUTEokl(存儲過程可以根據(jù)用戶的要求或者基表定義的改變而改變。使用語句可以更改先前通過執(zhí)行語句創(chuàng)建的過程,但不會更改權(quán)限,也不影響相關(guān)的存儲過程或觸發(fā)器。ERUDECORPETAERCERUDECORPRETLA程過儲存改修3)10.2

使用存儲過程第16頁/共33頁Tnumb]erAL;ERPROC[EDURE]procedure_name[其語法形式如下:]n...,[]]TUPTUO[]tluafed=[]GNIYRAV[}epyt_atadretemarap@{[]NOITACILPERROF[]}NOITPYRCNE,ELIPMOCE|NOITPYRCNE|ELIPMOCER{HTIW[ASsql_statement[...n]下面對存儲過程oakland_authors進(jìn)行修改,使其能夠顯示出所有居住在加里福尼亞的作者,而不考慮其它地區(qū)居住的作者。10.2

使用存儲過程第17頁/共33頁cand_authorsalterproedureoakl修改存儲過程的代碼如下:

sanoitpyrcnehtiwsrohtuamorfpiz,ytic,sserdda,emanl_ua,emanf_uatceles()刪除存儲過程4

e="ca"orderbyautlname,au_fwamehe_resatn刪除存儲過程可以使用命令,命令可以將一個或者多個存儲過程或者存儲過程組從當(dāng)前數(shù)據(jù)庫中刪除…其語法形式如下:]noorp{erudecrpporde,[}erudc,PORDPORD10.2

使用存儲過程第18頁/共33頁puthoraoenrudecorspordklad_a(如)將帶存參儲數(shù)過的程存orshloakand_aut從儲數(shù)過據(jù)程庫中刪除,則在1omeM的編輯框中輸入以下代碼:本存5儲過過程中使用了輸入?yún)?shù)。程使用兩種類型的參數(shù),一種是輸入?yún)?shù),另一種是輸出參數(shù)。不使用OUTPUT保留字的參數(shù)是輸入?yún)?shù),使用OUTPUT保留字的參數(shù)是輸出參數(shù)。輸入?yún)?shù)是單向的,而輸出參數(shù)是雙向的,可以向調(diào)用者返回值。例的存儲 )02(rahcravemantsrif@,)04(rahcravemantsal@rofni_rohtuaerudecorpetaercenohp,emanf_ua,emanl_uatcelessa

emantsal@=emanl_uadnaemantsrif@=emanf_uaerehwsrohtuamorf10.2

使用存儲過程第19頁/共33頁1組1P.1corderotSODAT0件0.組簡.2介2..33用AADDOO組件操作存儲過程()的關(guān)鍵屬性作遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫中的存儲過程。是一個數(shù)據(jù)集組件,數(shù)據(jù)集組件所具有的公共屬性、方法和事件,在都具有。eAODStordProcAODcrPderotSOoDA操于用要TAOSoredProcD主1件rcorPdeTotSODA??屬性noitcennoCevitcA??屬性retliFgnirtSnoitcennoC??FilteredParameters屬性ProcedureName屬性10.2

使用存儲過程第20頁/共33頁()2Open屬關(guān)性鍵方法??屬性hserfeResolCoceRtxNtesdre屬性組TcorPderotSODA2.【件例建】10-3的立使一用個用和管理存儲過程的應(yīng)用程序。使用的示例數(shù)據(jù)庫。PSBUSLQSSMrevre【1實首現(xiàn)先步建驟立】使序。()定制窗體應(yīng)用程210.2

使用存儲過程圖10-5程序設(shè)計界面第21頁/共33頁10.2

使用存儲過程第22頁/共33頁組件名屬性屬性值說明ADOConnection1ConnectionString使用ConnectionString設(shè)置對話框設(shè)置該屬性,連接到數(shù)據(jù)庫Pubs。ADOStoredProc1ConnectionADOConnection1指定使用的數(shù)據(jù)連接組件。ProcedureNameauthor_infor;1指定使用的存儲過程名DataSource1DataSetADOStoredProc1指定使用的數(shù)據(jù)集。DBGrid1DataSourceDataSource1為表格指定數(shù)據(jù)源。ReadOnlyTrue設(shè)置為只讀Button1Caption執(zhí)行存儲過程Gropbox1Caption傳入?yún)?shù)Label1CaptionLastNameLabel2CaptionFirstNameEdit1Text為空Edit2Text為空表10-4各組件屬性設(shè)置10.2

使用存儲過程(34)編運(yùn)寫行代程碼序圖10-6執(zhí)行結(jié)果第23頁/共33頁10.3

主從結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序第24頁/共33頁【例使有-401】用時自我們需要將數(shù)據(jù)表格聯(lián)系起來,這些表格具一種一對多的關(guān)系。比如客戶表和訂單表,一個客戶可能會有許多訂單。當(dāng)我們?yōu)g覽客戶訂貨信息時,希望在客戶表選擇一個客戶后,能夠顯示該客戶的所有訂單。利用eDlphi可以方便地設(shè)計出主從表結(jié)構(gòu)的應(yīng)用程序?!?實首現(xiàn)先步建驟立】應(yīng)的用數(shù)據(jù)庫中的表和表建立一個程序,實現(xiàn)主從表。為主表,為從表,兩表之間通過字段鏈接。uoNtsCsredrOremotsuc/rsredOtsucremoomedbdbdm.ssseccA帶Dihple()創(chuàng)建數(shù)據(jù)模塊程序。210.3

主從結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序圖10-7數(shù)據(jù)模塊設(shè)計界面第25頁/共33頁10.3

主從結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序第26頁/共33頁組件名屬性屬性值說明ADOConnection1ConnectionString使用ConnectionString設(shè)置對話框設(shè)置該屬性,連接到數(shù)據(jù)庫dbdemos.mdb。ADOTable1ConnectionADOConnection1指定使用的數(shù)據(jù)連接組件。TableNameCuctomer指定打開的數(shù)據(jù)表名ActiveTrue打開數(shù)據(jù)集。DataSource1DataSetADOTable1

溫馨提示

  • 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

提交評論