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

下載本文檔

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

文檔簡(jiǎn)介

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

事務(wù)處理第1頁(yè)/共33頁(yè)2.一致性事務(wù)是一個(gè)完整的單元,因?yàn)樗3謹(jǐn)?shù)據(jù)的一致性,將數(shù)據(jù)從一種數(shù)據(jù)一致?tīng)顟B(tài)轉(zhuǎn)換到另一種數(shù)據(jù)一致?tīng)顟B(tài)。隔離事務(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ù)的中間階段。性.3

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

事務(wù)處理第2頁(yè)/共33頁(yè)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í),為數(shù)據(jù)集中的每個(gè)記錄的寫(xiě)操作進(jìn)行隱式事務(wù)控制。它提交每一個(gè)獨(dú)立的寫(xiě)操作,如和。droceRdneppAtsoPihpleD。制控務(wù)事式顯是種一制制控務(wù)事式隱是種一用種ODA兩過(guò)Delphi式方的制控務(wù)事ihpleD一種是使用組件事如)所提供的方法和屬性進(jìn)行事務(wù)控制。到支持事務(wù)的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行事務(wù)控制。許多數(shù)據(jù)庫(kù)都提供自己的事務(wù)處理方式。itcennoCODATon(ihpleD另一種是直接發(fā)送SQL命令10.1

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

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

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

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

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

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

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

事務(wù)處理表10-2各組件屬性設(shè)置組件名屬性屬性值說(shuō)明ADOConnection1ConnectionString使用ConnectionString設(shè)置對(duì)話(huà)框設(shè)置該屬性,連接到數(shù)據(jù)庫(kù)dbdemos.mdb。ADOTable1ConnectionADOConnection1指定使用的數(shù)據(jù)連接組件。TableNameemployee指定打開(kāi)的數(shù)據(jù)表名ActiveTrue打開(kāi)數(shù)據(jù)集。DataSource1DataSetADOTable1指定使用的數(shù)據(jù)集。DBGrid1DataSourceDataSource1為表格指定數(shù)據(jù)源。ReadOnlyTrue表格設(shè)置為只讀btnBeginCaption開(kāi)始事務(wù)EnableTrue允許使用按鈕btnCommitCaption提交事務(wù)EnableFalse禁止使用按鈕btnRollBackCaption回退事務(wù)EnableFalse禁止使用按鈕btnCloseCaption關(guān)第閉8頁(yè)/共33頁(yè)EnableTrue允許使用按鈕10.1

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

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

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

使用存儲(chǔ)過(guò)程第12頁(yè)/共33頁(yè)組件名屬性屬性值說(shuō)明ADOConnection1ConnectionString使用ConnectionString設(shè)置對(duì)話(huà)框設(shè)置該屬性,建立到數(shù)據(jù)庫(kù)dbdemos.mdb的連

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

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

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

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

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

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

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

使用存儲(chǔ)過(guò)程第17頁(yè)/共33頁(yè)cand_authorsalterproedureoakl修改存儲(chǔ)過(guò)程的代碼如下:

sanoitpyrcnehtiwsrohtuamorfpiz,ytic,sserdda,emanl_ua,emanf_uatceles()刪除存儲(chǔ)過(guò)程4

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

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

emantsal@=emanl_uadnaemantsrif@=emanf_uaerehwsrohtuamorf10.2

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

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

使用存儲(chǔ)過(guò)程圖10-5程序設(shè)計(jì)界面第21頁(yè)/共33頁(yè)10.2

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

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論