第10章 Delphi的數(shù)據(jù)訪問(wèn)方法_第1頁(yè)
第10章 Delphi的數(shù)據(jù)訪問(wèn)方法_第2頁(yè)
第10章 Delphi的數(shù)據(jù)訪問(wèn)方法_第3頁(yè)
第10章 Delphi的數(shù)據(jù)訪問(wèn)方法_第4頁(yè)
第10章 Delphi的數(shù)據(jù)訪問(wèn)方法_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組第第10章章 Delphi的數(shù)據(jù)訪問(wèn)方法的數(shù)據(jù)訪問(wèn)方法Delphi7.0的的BDE組件、組件、Delphi7.0的的ADO組件、數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)案例組件、數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)案例Delphi的數(shù)據(jù)訪問(wèn)方法及使用的數(shù)據(jù)訪問(wèn)方法及使用數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組2學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)u了解:了解:nDelphi的數(shù)據(jù)庫(kù)管理功能;數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)工的數(shù)據(jù)庫(kù)管理功能;數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)工具的使用及數(shù)據(jù)庫(kù)應(yīng)用程序的開發(fā)過(guò)程。具的使用及數(shù)據(jù)庫(kù)應(yīng)用程序的開發(fā)過(guò)程。u理解:理解:nDelphi的相關(guān)組件,以及訪問(wèn)數(shù)據(jù)庫(kù)的

2、相關(guān)接口技的相關(guān)組件,以及訪問(wèn)數(shù)據(jù)庫(kù)的相關(guān)接口技術(shù)。術(shù)。u掌握:掌握:nDelphi與與SQL Server數(shù)據(jù)庫(kù)的連接方法;數(shù)據(jù)數(shù)據(jù)庫(kù)的連接方法;數(shù)據(jù)庫(kù)的編輯和查詢操作等方法。庫(kù)的編輯和查詢操作等方法。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組310.1 Delphi7.0的的BDE組件組件u10.1.1 BDE組件頁(yè)組件頁(yè)u10.1.2 TDatabase組件組件u10.1.3 TTable組件組件u10.1.4 TQuery組件組件數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組41. Delphi訪問(wèn)的數(shù)據(jù)庫(kù)類型訪問(wèn)的數(shù)據(jù)庫(kù)類型(1)Jet數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)(2

3、)ISAM數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)(3)ODBC數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)2. Delphi數(shù)據(jù)庫(kù)連接與訪問(wèn)數(shù)據(jù)庫(kù)連接與訪問(wèn)數(shù)據(jù)庫(kù)訪問(wèn)機(jī)制數(shù)據(jù)庫(kù)訪問(wèn)機(jī)制數(shù)據(jù)庫(kù)連接控件數(shù)據(jù)庫(kù)連接控件BDETdatabase/通過(guò)BDE管理器ADOTADOConnectionDbExpressTSQLConnection數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組53. Delphi訪問(wèn)數(shù)據(jù)的接口訪問(wèn)數(shù)據(jù)的接口數(shù)據(jù)訪問(wèn)過(guò)程涉及三個(gè)組成部分:數(shù)據(jù)訪問(wèn)過(guò)程涉及三個(gè)組成部分:(1)數(shù)據(jù)提供者數(shù)據(jù)提供者(Data Provider)(2)數(shù)據(jù)服務(wù)提供者數(shù)據(jù)服務(wù)提供者(Data Service Provider)(3)數(shù)據(jù)使用者數(shù)據(jù)

4、使用者(Data Consumer)n數(shù)據(jù)使用者和數(shù)據(jù)提供者之間的橋梁就是數(shù)據(jù)訪問(wèn)接數(shù)據(jù)使用者和數(shù)據(jù)提供者之間的橋梁就是數(shù)據(jù)訪問(wèn)接口對(duì)象??趯?duì)象。nDelphi的三種數(shù)據(jù)訪問(wèn)接口的三種數(shù)據(jù)訪問(wèn)接口n數(shù)據(jù)訪問(wèn)對(duì)象(數(shù)據(jù)訪問(wèn)對(duì)象(DAO)。)。n遠(yuǎn)程數(shù)據(jù)對(duì)象(遠(yuǎn)程數(shù)據(jù)對(duì)象(RDO)nActivcX數(shù)據(jù)對(duì)象(數(shù)據(jù)對(duì)象(ADO)n這些接口分別代表了數(shù)據(jù)訪問(wèn)技術(shù)的不同發(fā)展階段。這些接口分別代表了數(shù)據(jù)訪問(wèn)技術(shù)的不同發(fā)展階段。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組6組件組件組件基本用途介紹組件基本用途介紹TTable通過(guò)數(shù)據(jù)引擎,把數(shù)據(jù)表中的數(shù)據(jù)送至TDataSource組件TQuer

5、y執(zhí)行SQL語(yǔ)句TStoreProc允許應(yīng)用程序接觸服務(wù)器存儲(chǔ)過(guò)程TDataBase建立一個(gè)與數(shù)據(jù)庫(kù)的持久性聯(lián)系TSession對(duì)你所應(yīng)用的TDatabase組件提供全方位的支持TBatchMoveBatchMove用于復(fù)制一個(gè)數(shù)據(jù)庫(kù)表格結(jié)構(gòu)或者它的數(shù)據(jù)TUpdataSQL允許用戶使用Delphi7.0的緩存數(shù)據(jù)的更新特性數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組7u對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)之前必須使用對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)之前必須使用TDatabase和數(shù)據(jù)和數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)的連接,再對(duì)數(shù)據(jù)集進(jìn)行相應(yīng)的操作。庫(kù)進(jìn)行相應(yīng)的連接,再對(duì)數(shù)據(jù)集進(jìn)行相應(yīng)的操作。u在下列場(chǎng)合需要用到在下列場(chǎng)合需要用到

6、TdataBase組件:組件:(1)建立與數(shù)據(jù)庫(kù)的永久連接)建立與數(shù)據(jù)庫(kù)的永久連接(2)數(shù)據(jù)庫(kù)服務(wù)器要求用戶的登錄)數(shù)據(jù)庫(kù)服務(wù)器要求用戶的登錄(3)控制事務(wù)的處理)控制事務(wù)的處理(4)應(yīng)用程序制定的)應(yīng)用程序制定的BDE數(shù)據(jù)庫(kù)的別名數(shù)據(jù)庫(kù)的別名數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組8方方 法法含含 義義AliasName指明連接中的數(shù)據(jù)庫(kù)的別名Connected標(biāo)志聯(lián)系是否有效DatabaseName指明與該TDatabase組件相連的數(shù)據(jù)庫(kù)的名字DataSetCount指明與該TDatabase組件相連的數(shù)據(jù)庫(kù)的數(shù)目DataSets給出處于活動(dòng)狀態(tài)的所有數(shù)據(jù)集的索引數(shù)組

7、Directory指明Paradox或dBASE數(shù)據(jù)庫(kù)的工作路徑DriverName指明數(shù)據(jù)庫(kù)的BDE的驅(qū)動(dòng)名ExclusIve使應(yīng)用程序享有對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的專有權(quán)Handle指明BDE數(shù)據(jù)庫(kù)的句柄數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組9事事 件件含含 義義HandleShared指明是否共享一個(gè)數(shù)據(jù)庫(kù)的句柄InTransaction標(biāo)志著數(shù)據(jù)庫(kù)是否在事件處理中IsSQLBased指明該TDatabase組件使用的是BDE SQL Links driver還是BDEODBCKeepConnection指明在沒(méi)有數(shù)據(jù)集打開的情況下,應(yīng)用程序是否保持與數(shù)據(jù)庫(kù)的聯(lián)系Locale指

8、明該TDatabase組件的BDE語(yǔ)言驅(qū)動(dòng)器LogInPrompt指明在建立聯(lián)系時(shí),是否顯示標(biāo)準(zhǔn)的登錄對(duì)話框Params包含聯(lián)系中的參數(shù)信息SessionName指明該TDatabase組件使用的Session組件名Session指向與該TDatabase組件相連的Session組件數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組10事事 件件含含 義義ReadOnly指明此聯(lián)系提供只讀訪問(wèn)Temporary指明該TDatabase組件是否為暫時(shí)的TransIsoLation說(shuō)明BDE控制database事務(wù)的獨(dú)立等級(jí)nConnection屬性 當(dāng)Connection=True時(shí),

9、表明可以在不打開數(shù)據(jù)集的情況下與數(shù)據(jù)庫(kù)相連。 當(dāng)Connection=False時(shí),表明TDataBase組件沒(méi)有與任何數(shù)據(jù)庫(kù)相連。nKeepConnection屬性 當(dāng)KeepConnection=True時(shí),表示聯(lián)系會(huì)被保持。nDataSets屬性 應(yīng)用程序可以通過(guò)使用DataSets屬性值來(lái)訪問(wèn)與該TDatabase組件相連的所有處于打開狀態(tài)的數(shù)據(jù)集。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組11u在在Delphi中,訪問(wèn)數(shù)據(jù)的基本單元是數(shù)據(jù)集對(duì)中,訪問(wèn)數(shù)據(jù)的基本單元是數(shù)據(jù)集對(duì)象。應(yīng)用程序正是通過(guò)數(shù)據(jù)集組件來(lái)訪問(wèn)數(shù)據(jù)庫(kù)象。應(yīng)用程序正是通過(guò)數(shù)據(jù)集組件來(lái)訪問(wèn)數(shù)據(jù)庫(kù)的。的。u

10、一個(gè)數(shù)據(jù)集對(duì)象就代表了數(shù)據(jù)庫(kù)的一張表格,或一個(gè)數(shù)據(jù)集對(duì)象就代表了數(shù)據(jù)庫(kù)的一張表格,或者是訪問(wèn)數(shù)據(jù)庫(kù)的一個(gè)查詢或者存儲(chǔ)過(guò)程。者是訪問(wèn)數(shù)據(jù)庫(kù)的一個(gè)查詢或者存儲(chǔ)過(guò)程。uTTable隸屬于數(shù)據(jù)集組件,它從數(shù)據(jù)集繼承而隸屬于數(shù)據(jù)集組件,它從數(shù)據(jù)集繼承而來(lái),有著許多共同的屬性、方法和事件。來(lái),有著許多共同的屬性、方法和事件。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組12事事 件件含含 義義DatabaseName表明數(shù)據(jù)集聯(lián)系的數(shù)據(jù)庫(kù)別名DBHandle表明數(shù)據(jù)集所在的數(shù)據(jù)庫(kù)BDE的句柄DefaultIndex表明一個(gè)打開表格中的數(shù)據(jù)是否按默認(rèn)的索引排序Eof標(biāo)志著記錄指針是否停留在數(shù)據(jù)

11、集的最后一個(gè)記錄上Exclusive允許用戶以專有的方式打開一個(gè)Paradox或dBASE表格Fields指向數(shù)據(jù)集的字段列表Filter表明當(dāng)前數(shù)據(jù)集過(guò)濾的文本內(nèi)容Filtered表明一個(gè)數(shù)據(jù)集的過(guò)濾是否被激活FilterOptions設(shè)置過(guò)濾選項(xiàng)Handle允許程序直接調(diào)用API函數(shù)數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組13事事 件件含含 義義IndexFieldName顯示數(shù)據(jù)庫(kù)表格所采用的索引排序的字段名IndexFields指出數(shù)據(jù)庫(kù)中的字段名列表IndexName用來(lái)為數(shù)據(jù)庫(kù)表格制定當(dāng)前排列索引MasterFields在主表中指定一個(gè)或者多個(gè)字段以建立主附表之

12、間的聯(lián)系MasterSource指定作為數(shù)據(jù)集主表的data source組件的名字Name該組件在被其他組件引用時(shí)的名字Modified標(biāo)志著當(dāng)前記錄是否被修改ObjectView指明字段在Fields property中是層次排列還是平鋪RecordCount顯示與數(shù)據(jù)集相連的記錄總數(shù)數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組14事事 件件 含含 義義RecordCount顯示與數(shù)據(jù)集相連的記錄總數(shù)ReadOnly明一個(gè)數(shù)據(jù)庫(kù)表格在此應(yīng)用程序中是否只讀SessionName指定與數(shù)據(jù)集相連的Session的名字StoreDefs指出數(shù)據(jù)庫(kù)表格的字段和索引與數(shù)據(jù)模塊一致,還

13、是與窗體一致TableName指明該組件指向的數(shù)據(jù)庫(kù)表格的名字TableStyle指出當(dāng)前操作的數(shù)據(jù)表格的類型UpdateMode決定BDE如何在SQL數(shù)據(jù)庫(kù)中查詢更新記錄UpdateObject指出在允許緩存更新時(shí),用來(lái)更新只讀記錄的update object組件數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組15uActive屬性屬性 Active屬性是用來(lái)說(shuō)明數(shù)據(jù)庫(kù)文件的打開狀態(tài)。應(yīng)用屬性是用來(lái)說(shuō)明數(shù)據(jù)庫(kù)文件的打開狀態(tài)。應(yīng)用Active屬性來(lái)決定及設(shè)定一個(gè)數(shù)據(jù)集組件數(shù)據(jù)庫(kù)數(shù)據(jù)之間的聯(lián)系。屬性來(lái)決定及設(shè)定一個(gè)數(shù)據(jù)集組件數(shù)據(jù)庫(kù)數(shù)據(jù)之間的聯(lián)系。它的屬性值是一個(gè)布爾數(shù)(它的屬性值是一

14、個(gè)布爾數(shù)(True/False)來(lái)表示的。)來(lái)表示的。 可以通過(guò)下列方法設(shè)置可以通過(guò)下列方法設(shè)置Active的屬性值為的屬性值為True。 (1)觸發(fā)數(shù)據(jù)集的)觸發(fā)數(shù)據(jù)集的BeforeOpen事件事件 (2)設(shè)置數(shù)據(jù)集的狀態(tài)為)設(shè)置數(shù)據(jù)集的狀態(tài)為dsBrowse (3)在數(shù)據(jù)集中打開一個(gè))在數(shù)據(jù)集中打開一個(gè)BDE記錄指針記錄指針 (4)觸發(fā)數(shù)據(jù)集的)觸發(fā)數(shù)據(jù)集的AfterOpen事件事件uDatabaseName屬性屬性 DatabaseName屬性是用來(lái)說(shuō)明當(dāng)前數(shù)據(jù)集的來(lái)源,即應(yīng)屬性是用來(lái)說(shuō)明當(dāng)前數(shù)據(jù)集的來(lái)源,即應(yīng)用程序所利用的數(shù)據(jù)庫(kù)的名字。它可以是用程序所利用的數(shù)據(jù)庫(kù)的名字。它可以是BDE

15、定義的數(shù)據(jù)庫(kù)別名,定義的數(shù)據(jù)庫(kù)別名,如如DBDEMOS;也可以是數(shù)據(jù)庫(kù)文件,像;也可以是數(shù)據(jù)庫(kù)文件,像Paradox和和dBASE等等文件所在的路徑;還可以是由文件所在的路徑;還可以是由TDataBase組件定義的數(shù)據(jù)庫(kù)名組件定義的數(shù)據(jù)庫(kù)名數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組16uTableName屬性屬性 它是用來(lái)說(shuō)明這個(gè)它是用來(lái)說(shuō)明這個(gè)TTable組件所對(duì)應(yīng)的是數(shù)據(jù)庫(kù)中的哪一張組件所對(duì)應(yīng)的是數(shù)據(jù)庫(kù)中的哪一張數(shù)據(jù)庫(kù)表格。它和數(shù)據(jù)庫(kù)表格。它和DatabaseName一樣,實(shí)在設(shè)定階段給定,它一樣,實(shí)在設(shè)定階段給定,它在在DatabaseName設(shè)定之后給出。設(shè)定之后給出

16、。uFields屬性屬性 Fields屬性是用來(lái)指出數(shù)據(jù)集的字段列表。應(yīng)用屬性是用來(lái)指出數(shù)據(jù)集的字段列表。應(yīng)用Fields屬屬性可以訪問(wèn)數(shù)據(jù)庫(kù)表格中的字段組合。性可以訪問(wèn)數(shù)據(jù)庫(kù)表格中的字段組合。 對(duì)于用戶來(lái)說(shuō),利用對(duì)于用戶來(lái)說(shuō),利用Fields屬性查詢字段是非常有用的,有屬性查詢字段是非常有用的,有以下兩點(diǎn)原因:以下兩點(diǎn)原因: (1)可以重溫?cái)?shù)據(jù)集的部分或者全部字段。)可以重溫?cái)?shù)據(jù)集的部分或者全部字段。 (2)可以對(duì)運(yùn)行時(shí)內(nèi)部的數(shù)據(jù)結(jié)構(gòu)未知的隱藏表格進(jìn)行操作。)可以對(duì)運(yùn)行時(shí)內(nèi)部的數(shù)據(jù)結(jié)構(gòu)未知的隱藏表格進(jìn)行操作。uFilter屬性屬性 Filter屬性允許用戶定義一個(gè)數(shù)據(jù)集過(guò)濾器。當(dāng)過(guò)濾被數(shù)據(jù)屬

17、性允許用戶定義一個(gè)數(shù)據(jù)集過(guò)濾器。當(dāng)過(guò)濾被數(shù)據(jù)集應(yīng)用時(shí),只有那些滿足過(guò)濾器條件的記錄才會(huì)被顯示。集應(yīng)用時(shí),只有那些滿足過(guò)濾器條件的記錄才會(huì)被顯示。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組17事事 件件含含 義義AddIndex為數(shù)據(jù)庫(kù)表格建立一個(gè)新的索引Append向數(shù)據(jù)集中添加一條新的空記錄ApplyRange設(shè)定數(shù)據(jù)集的檢索范圍Cancel在對(duì)當(dāng)前的記錄的更改尚未提交時(shí)撤銷它們ClearFields清除當(dāng)前記錄的所有字段內(nèi)容Close關(guān)閉一個(gè)數(shù)據(jù)集Create產(chǎn)生一個(gè)數(shù)據(jù)庫(kù)表格組件Delete刪除當(dāng)前記錄,將記錄指針指向下一條記錄CreateTable建立一個(gè)使用新的結(jié)構(gòu)

18、信息的表格EditKey將Table組件置于查詢狀態(tài)Edit允許用戶編輯數(shù)據(jù)集中的數(shù)據(jù)數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組18事事 件件含含 義義FieldByName根據(jù)特定的字段名查找字段FindField在數(shù)據(jù)集中查詢一個(gè)特定的字段FindKey查找包含特定字段值的記錄GetFieldNames讀取一個(gè)數(shù)據(jù)集中所有字段名的列表GetIndexNames讀取數(shù)據(jù)庫(kù)表格中有效的索引列表GotoKey將記錄指針移至一條與當(dāng)前查詢值匹配的記錄Insert向數(shù)據(jù)集中插入一條新的空記錄Locate查找一條特定的記錄并使之成為當(dāng)前記錄MoveBy將記錄指針置于數(shù)據(jù)集中與當(dāng)前記錄

19、相關(guān)的一條記錄處Open打開一個(gè)數(shù)據(jù)集數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組19事事 件件含含 義義Refresh從數(shù)據(jù)集中取得數(shù)據(jù)來(lái)更新數(shù)據(jù)集RenameTable對(duì)與此表格組件相關(guān)的Paradox或dBASE表進(jìn)行更名操作SetFields設(shè)置一個(gè)記錄中所有的字段值SetKey在查詢前設(shè)定查詢值和檢索范圍SetRange設(shè)置并應(yīng)用一個(gè)檢索范圍的起始值和結(jié)束值SetRangeEnd指定檢索范圍的結(jié)束記錄SetRangeStart指定檢索范圍的起始記錄UnlockTable解除對(duì)Paradox或dBASE表格鎖定UpdateRecord對(duì)一個(gè)記錄更新觸發(fā)一個(gè)數(shù)據(jù)事件Pos

20、t向數(shù)據(jù)集提交修改的記錄數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組20 在在TTable組件中實(shí)現(xiàn)數(shù)據(jù)庫(kù)記錄的查詢依靠組件中實(shí)現(xiàn)數(shù)據(jù)庫(kù)記錄的查詢依靠EditKey、FieldByName、FindKey、FindNearest、GotoKey、GotoNearest、Locate以及以及SetKey這些方法。下面分別介紹前這些方法。下面分別介紹前5種具體的使用方法。種具體的使用方法。(1)EditKey 調(diào)用調(diào)用EditKey方法將數(shù)據(jù)集置于方法將數(shù)據(jù)集置于dsSetKey狀態(tài),也就是將狀態(tài),也就是將TTable組件置于查詢狀態(tài)。同時(shí),存儲(chǔ)當(dāng)前查詢值緩沖區(qū)的當(dāng)前內(nèi)容。組件置于

21、查詢狀態(tài)。同時(shí),存儲(chǔ)當(dāng)前查詢值緩沖區(qū)的當(dāng)前內(nèi)容。(2)FieldByName FieldByName函數(shù)的基本格式如下:函數(shù)的基本格式如下:function FieldByName(const FieldName:string):):TFiled; FieldByName方法是根據(jù)一個(gè)特定的字段名查詢一個(gè)字段。方法是根據(jù)一個(gè)特定的字段名查詢一個(gè)字段。FieldName是一個(gè)已存在的字段名。是一個(gè)已存在的字段名。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組21(3)FindKey FindKey函數(shù)的基本格式如下:函數(shù)的基本格式如下:function FindKey(const

22、KeyValue:array of const):):Boolean; FindKey方法相當(dāng)于將設(shè)置表格組件的查找狀態(tài)、設(shè)置查詢以方法相當(dāng)于將設(shè)置表格組件的查找狀態(tài)、設(shè)置查詢以及在數(shù)據(jù)集中查詢者三個(gè)步驟的功能集中在一個(gè)方法調(diào)用中實(shí)現(xiàn)。及在數(shù)據(jù)集中查詢者三個(gè)步驟的功能集中在一個(gè)方法調(diào)用中實(shí)現(xiàn)。(4)FindNearest FindNearest方法與方法與FindKey方法很相似,不同之處在于方法很相似,不同之處在于FindNearest方法不要求精確查詢。調(diào)用方法不要求精確查詢。調(diào)用FindNearest方法將移動(dòng)方法將移動(dòng)記錄指針到數(shù)據(jù)集中語(yǔ)查詢值精確符合的一個(gè)特定的記錄或數(shù)據(jù)集中記錄指針

23、到數(shù)據(jù)集中語(yǔ)查詢值精確符合的一個(gè)特定的記錄或數(shù)據(jù)集中語(yǔ)查詢值最相近的記錄。語(yǔ)查詢值最相近的記錄。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組22(5)GotoKey 調(diào)用調(diào)用GotoKey方法可以用來(lái)查詢一條特定的記錄,查詢值是方法可以用來(lái)查詢一條特定的記錄,查詢值是已經(jīng)用已經(jīng)用SetKey或者或者EditKey方法與方法與Fields屬性值確定了的。屬性值確定了的。 下面舉例說(shuō)明下面舉例說(shuō)明GotoKey的使用方法:的使用方法:procedure TForm1.Button1Click(Sender:TObject);beginwith Table1 dobeginEditK

24、ey; 將將Table1置于查詢狀態(tài)置于查詢狀態(tài)FieldByName(Country).AsString:=China; 設(shè)置查詢值設(shè)置查詢值FieldByName(City).AsString:=Beijing; 設(shè)置查詢值設(shè)置查詢值GotoKey; 執(zhí)行查詢過(guò)程執(zhí)行查詢過(guò)程end;end;數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組23uTQuery是一個(gè)建立在是一個(gè)建立在SQL基礎(chǔ)上,專門用于對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)基礎(chǔ)上,專門用于對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢的組件。行查詢的組件。TQuery組件使用的是組件使用的是SQL語(yǔ)言,可以一次訪問(wèn)數(shù)據(jù)語(yǔ)言,可以一次訪問(wèn)數(shù)據(jù)庫(kù)的一個(gè)或者多

25、個(gè)表格。庫(kù)的一個(gè)或者多個(gè)表格。TQuery組件訪問(wèn)的表格可以是在遠(yuǎn)程服務(wù)組件訪問(wèn)的表格可以是在遠(yuǎn)程服務(wù)器的數(shù)據(jù)庫(kù)中(例如:器的數(shù)據(jù)庫(kù)中(例如:Sybase、SQLServer、Oracle、Infomix、DB2和和InterBase),也可以上當(dāng)?shù)氐谋砀瘢ɡ纾海?,也可以上?dāng)?shù)氐谋砀瘢ɡ纾篜aradox、dBASE、Access和和FoxPro),還可以是),還可以是ODBC數(shù)據(jù)數(shù)據(jù)庫(kù)。庫(kù)。uTQuery組件的重要性體現(xiàn)在:組件的重要性體現(xiàn)在:(1)可同時(shí)訪問(wèn)多張表格)可同時(shí)訪問(wèn)多張表格(2)自動(dòng)訪問(wèn)基本表格的子集,而不是訪問(wèn)所有的數(shù)據(jù))自動(dòng)訪問(wèn)基本表格的子集,而不是訪問(wèn)所有的數(shù)據(jù)數(shù)據(jù)庫(kù)技

26、術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組24TQuery和和TTable組件同屬于數(shù)據(jù)集組件,它們有著許多相似的地組件同屬于數(shù)據(jù)集組件,它們有著許多相似的地方,但也有各自特殊的地方,下面為其主要區(qū)別:方,但也有各自特殊的地方,下面為其主要區(qū)別:(1)TQuery組件主要功能是用來(lái)支持組件主要功能是用來(lái)支持SQL語(yǔ)言訪問(wèn)本地或者遠(yuǎn)程語(yǔ)言訪問(wèn)本地或者遠(yuǎn)程數(shù)據(jù)庫(kù),所以,數(shù)據(jù)庫(kù),所以,TQuery組件提供了一系列與組件提供了一系列與TTable組件不同的屬組件不同的屬性、方法和事件。性、方法和事件。(2)TQuery組件允許用戶同時(shí)訪問(wèn)多個(gè)表,而組件允許用戶同時(shí)訪問(wèn)多個(gè)表,而TTable組

27、件一次只組件一次只能訪問(wèn)一個(gè)表格。能訪問(wèn)一個(gè)表格。(3)TQuery組件和組件和TTable組件以不同的方式與組件以不同的方式與SQL服務(wù)器進(jìn)行服務(wù)器進(jìn)行交互,在執(zhí)行數(shù)據(jù)定義語(yǔ)句(交互,在執(zhí)行數(shù)據(jù)定義語(yǔ)句(DDL)時(shí),應(yīng)當(dāng)使用)時(shí),應(yīng)當(dāng)使用TQuery組件,而組件,而在以非集中方式訪問(wèn)數(shù)據(jù)庫(kù)時(shí)應(yīng)當(dāng)使用在以非集中方式訪問(wèn)數(shù)據(jù)庫(kù)時(shí)應(yīng)當(dāng)使用TTable組件。組件。(4)TQuery組件訪問(wèn)的是表格中的特定數(shù)據(jù)內(nèi)容;而組件訪問(wèn)的是表格中的特定數(shù)據(jù)內(nèi)容;而TTable組件組件只有提供過(guò)濾或限定檢索范圍才能訪問(wèn)表格中的特定數(shù)據(jù),否則只有提供過(guò)濾或限定檢索范圍才能訪問(wèn)表格中的特定數(shù)據(jù),否則TTable組件將

28、訪問(wèn)表格中的全部數(shù)據(jù)。組件將訪問(wèn)表格中的全部數(shù)據(jù)。如前所述,如前所述,TQuery組件隸屬于數(shù)據(jù)集組件,所有數(shù)據(jù)集組件具有的組件隸屬于數(shù)據(jù)集組件,所有數(shù)據(jù)集組件具有的屬性、方法和事件屬性、方法和事件TQuery組件全部都有。組件全部都有。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組25事事 件件含含 義義Constrained表明Paradox和dBASE表格是否必須在用SELECT語(yǔ)句設(shè)定的范圍內(nèi)執(zhí)行更新和插入操作DataSource指明引入當(dāng)前字段值得datasource組件Local表明當(dāng)前訪問(wèn)的是當(dāng)?shù)氐腜aradox或dBASE表格還是遠(yuǎn)程服務(wù)器上的SQL表格Param

29、Check表明在SQL屬性在運(yùn)行時(shí)發(fā)生改變后,查詢的參數(shù)列表ParamCount表明當(dāng)前查詢參數(shù)的總數(shù)Params包含了用SQL語(yǔ)句查詢的參數(shù)性質(zhì)Prepared決定是否準(zhǔn)備好執(zhí)行一個(gè)查詢數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組26事事 件件含含 義義RequestLive表明執(zhí)行查詢時(shí),是否允許BDE及時(shí)返回應(yīng)用程序?qū)?shù)據(jù)結(jié)果的修改RowsAffected返回上一次執(zhí)行查詢更新或刪除的記錄數(shù)SQL設(shè)置執(zhí)行查詢時(shí)所需的SQL語(yǔ)句SQLBinary用于BDE和TQuery的直接聯(lián)系StmtHandle用于調(diào)用一些BDE的API函數(shù)Text用于指明傳遞給BDE的SQL查詢的實(shí)際

30、內(nèi)容UniDirection1決定在查詢數(shù)據(jù)結(jié)果時(shí),是否允許BDE的記錄指針雙向移動(dòng)數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組27uDelphi7.0提供了一套采用提供了一套采用ADO的組件。利用這些組件,用戶可以的組件。利用這些組件,用戶可以與與ADO數(shù)據(jù)庫(kù)相聯(lián)系,讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù)并執(zhí)行相應(yīng)的操作。數(shù)據(jù)庫(kù)相聯(lián)系,讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù)并執(zhí)行相應(yīng)的操作。u大多數(shù)的大多數(shù)的ADO連接和數(shù)據(jù)集組件都是與基于連接和數(shù)據(jù)集組件都是與基于BDE的連接和數(shù)據(jù)集組的連接和數(shù)據(jù)集組件相類似的。件相類似的。TADOConnection組件與基于組件與基于BDE的應(yīng)用程序的的應(yīng)用程序的TDatab

31、ase組件相類似。組件相類似。TADOTable與與TTable,TADOQuery與與TQuery以及以及TADOStroedProc和和TStroedProc之間都有這種類似的對(duì)應(yīng)關(guān)系。之間都有這種類似的對(duì)應(yīng)關(guān)系。u通過(guò)通過(guò)ADO數(shù)據(jù)集訪問(wèn)組件,可以不借助數(shù)據(jù)集訪問(wèn)組件,可以不借助BDE引擎而是通過(guò)微軟的引擎而是通過(guò)微軟的OLE BD來(lái)訪問(wèn)更為廣泛的數(shù)據(jù)庫(kù)中的數(shù)據(jù)。來(lái)訪問(wèn)更為廣泛的數(shù)據(jù)庫(kù)中的數(shù)據(jù)。ADO數(shù)據(jù)集訪問(wèn)組件數(shù)據(jù)集訪問(wèn)組件與常用的數(shù)據(jù)訪問(wèn)組件是并列的關(guān)系,由于與常用的數(shù)據(jù)訪問(wèn)組件是并列的關(guān)系,由于ADO數(shù)據(jù)集訪問(wèn)組件是數(shù)據(jù)集訪問(wèn)組件是從常用數(shù)據(jù)訪問(wèn)組件發(fā)展而來(lái),它的許多用法和常用數(shù)

32、據(jù)訪問(wèn)組件從常用數(shù)據(jù)訪問(wèn)組件發(fā)展而來(lái),它的許多用法和常用數(shù)據(jù)訪問(wèn)組件都是相同的都是相同的數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組28 TADOConnection組件被用于建立一個(gè)與組件被用于建立一個(gè)與ADO數(shù)據(jù)存儲(chǔ)的連接。為了執(zhí)行命令、獲取數(shù)據(jù)數(shù)據(jù)存儲(chǔ)的連接。為了執(zhí)行命令、獲取數(shù)據(jù)和操作數(shù)據(jù),可以把多個(gè)和操作數(shù)據(jù),可以把多個(gè)ADO數(shù)據(jù)集件和命令組數(shù)據(jù)集件和命令組件與一個(gè)件與一個(gè)TADOConnection組件關(guān)聯(lián)以共享鏈組件關(guān)聯(lián)以共享鏈接。這個(gè)組件與基于接。這個(gè)組件與基于BDE的程序中的的程序中的TDataBase組件類似,下面為其重要的屬性。組件類似,下面為其重要的屬性

33、。事事 件件含含 義義ConnectionString指明數(shù)據(jù)庫(kù)連接信息的屬性Connected用來(lái)說(shuō)明一個(gè)與數(shù)據(jù)庫(kù)的連接是否被激活ConnectionObject提供對(duì)ADO連接對(duì)象的直接訪問(wèn)ConnectionTimeout聲明連接可能需要的最長(zhǎng)時(shí)間數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組291. ConnectionString 通過(guò)設(shè)置通過(guò)設(shè)置ConnectionString來(lái)指明將來(lái)指明將ADO聯(lián)系組件與數(shù)據(jù)聯(lián)系組件與數(shù)據(jù)集相連的必要信息。集相連的必要信息。ConnectionString的屬性值包含了一個(gè)或者的屬性值包含了一個(gè)或者多個(gè)變?cè)H绻前鄠€(gè)變?cè)?,?/p>

34、么它們之間要用冒號(hào)分開。例如:多個(gè)變?cè)?。如果是包含多個(gè)變?cè)?,那么它們之間要用冒號(hào)分開。例如:ADOConnection1.ConnectionString:=Provider=SQLOLEDB.1;Integrated Security=SSPI; Persist Security in + fo=false; Initial Catalog=pubs; Data Source=JK在程序設(shè)計(jì)階段,它可以通過(guò)激活對(duì)象觀察器中該屬性欄,從允許的在程序設(shè)計(jì)階段,它可以通過(guò)激活對(duì)象觀察器中該屬性欄,從允許的ADO數(shù)據(jù)庫(kù)連接中選取。該屬性可以保存為文件后使用,在以后使用數(shù)據(jù)庫(kù)連接中選取。該屬性可以保存

35、為文件后使用,在以后使用時(shí)只要在該屬性欄中指明此文件名就可以在此使用該值。該屬性值也時(shí)只要在該屬性欄中指明此文件名就可以在此使用該值。該屬性值也可以包含用戶的身份和密碼信息。當(dāng)采用可以包含用戶的身份和密碼信息。當(dāng)采用Open方法或通過(guò)方法或通過(guò)ConnectionString顯式的注冊(cè)登錄信息時(shí),最好將顯式的注冊(cè)登錄信息時(shí),最好將LoginPrompt的屬性值設(shè)為的屬性值設(shè)為False,這樣可以避免不必要的注冊(cè)對(duì),這樣可以避免不必要的注冊(cè)對(duì)話框。話框。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組302. Connected 設(shè)置設(shè)置Connected屬性值為屬性值為True以建

36、立一個(gè)與以建立一個(gè)與ADO數(shù)據(jù)庫(kù)之間的聯(lián)數(shù)據(jù)庫(kù)之間的聯(lián)系而不打開一個(gè)數(shù)據(jù)集。將系而不打開一個(gè)數(shù)據(jù)集。將Connected設(shè)置為設(shè)置為False用來(lái)使一個(gè)聯(lián)系失用來(lái)使一個(gè)聯(lián)系失效。效。Connected的默認(rèn)屬性是的默認(rèn)屬性是False。 在應(yīng)用程序中,可以通過(guò)檢查在應(yīng)用程序中,可以通過(guò)檢查Connected屬性值來(lái)判斷一個(gè)聯(lián)系屬性值來(lái)判斷一個(gè)聯(lián)系的當(dāng)前狀態(tài)。如果的當(dāng)前狀態(tài)。如果Connected屬性值為屬性值為True,表明當(dāng)前聯(lián)系時(shí)處于激,表明當(dāng)前聯(lián)系時(shí)處于激活狀態(tài)的。反之,如果活狀態(tài)的。反之,如果Connected屬性值為屬性值為False,而另外一個(gè)屬性,而另外一個(gè)屬性KeepConne

37、ction的值也為的值也為False的話,表明該聯(lián)系處于中斷狀態(tài)。的話,表明該聯(lián)系處于中斷狀態(tài)。3. ConnectionObject 提供對(duì)提供對(duì)ADO聯(lián)系對(duì)象的直接訪問(wèn)。通過(guò)設(shè)置聯(lián)系對(duì)象的直接訪問(wèn)。通過(guò)設(shè)置ConnectionObject屬屬性可以取得參照性可以取得參照ADO聯(lián)系對(duì)象的直接聯(lián)系。通過(guò)這種訪問(wèn),應(yīng)用程序聯(lián)系對(duì)象的直接聯(lián)系。通過(guò)這種訪問(wèn),應(yīng)用程序可以直接使用與其對(duì)應(yīng)的可以直接使用與其對(duì)應(yīng)的ADO聯(lián)系對(duì)象的方法和屬性。聯(lián)系對(duì)象的方法和屬性。 利用利用ConnectionObject屬性對(duì)屬性對(duì)ADO聯(lián)系對(duì)象進(jìn)行直接訪問(wèn)是建立聯(lián)系對(duì)象進(jìn)行直接訪問(wèn)是建立在對(duì)在對(duì)ADO對(duì)象尤其是對(duì)象尤

38、其是ADO組件充分熟悉的基礎(chǔ)上的,所以使用時(shí)要謹(jǐn)組件充分熟悉的基礎(chǔ)上的,所以使用時(shí)要謹(jǐn)慎。慎。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組314. ConnectionTimeout ConnectionTimeout是用來(lái)聲明連接可能需要的最長(zhǎng)時(shí)間,該屬是用來(lái)聲明連接可能需要的最長(zhǎng)時(shí)間,該屬性是一個(gè)整數(shù),它的時(shí)間單位是秒,默認(rèn)的值為性是一個(gè)整數(shù),它的時(shí)間單位是秒,默認(rèn)的值為15.如果在如果在ConnectionTimeout表示的時(shí)間之前聯(lián)系成功或者調(diào)用了表示的時(shí)間之前聯(lián)系成功或者調(diào)用了Cancel方法方法的話,的話,ConnectionTimeout屬性沒(méi)有任何效用,但是如

39、果一個(gè)聯(lián)系超屬性沒(méi)有任何效用,但是如果一個(gè)聯(lián)系超過(guò)它規(guī)定的時(shí)間,它會(huì)終止聯(lián)系的請(qǐng)求,并產(chǎn)生一個(gè)異常。過(guò)它規(guī)定的時(shí)間,它會(huì)終止聯(lián)系的請(qǐng)求,并產(chǎn)生一個(gè)異常。 當(dāng)使用當(dāng)使用TADOConnection組件與組件與ADO數(shù)據(jù)庫(kù)聯(lián)系時(shí),首先使用數(shù)據(jù)庫(kù)聯(lián)系時(shí),首先使用TADOConnection組件的組件的ConnectionString屬性,屬性,ConnectionString屬性可以包含一系列的參數(shù)值,相互之間用冒號(hào)隔開,屬性可以包含一系列的參數(shù)值,相互之間用冒號(hào)隔開,ConnectionString屬性的值可以是包含一系列參數(shù)值的文件名。這種屬性的值可以是包含一系列參數(shù)值的文件名。這種文件名的內(nèi)容

40、與格式都與文件名的內(nèi)容與格式都與ConnectionString屬性值一樣。屬性值一樣。ConnectionString屬性和它的各種參數(shù)可以在程序中以字符串類型進(jìn)屬性和它的各種參數(shù)可以在程序中以字符串類型進(jìn)行設(shè)置,但更為常用的方法是在程序設(shè)計(jì)階段通過(guò)激活對(duì)象觀察器中該行設(shè)置,但更為常用的方法是在程序設(shè)計(jì)階段通過(guò)激活對(duì)象觀察器中該屬性的對(duì)話框設(shè)定(雙擊屬性的對(duì)話框設(shè)定(雙擊ConnectionString屬性欄或者單擊屬性欄中屬性欄或者單擊屬性欄中的省略號(hào)按鈕)。的省略號(hào)按鈕)。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組32TADOCommand組件類似于基于組件類似于基于B

41、DE的程序中的的程序中的TQuery的的Excute()方法和方法和TStoredProc的的ExecProc()方法。用來(lái)執(zhí)行方法。用來(lái)執(zhí)行SQL語(yǔ)句語(yǔ)句但不返回結(jié)果。在使用但不返回結(jié)果。在使用TADOCommand組件時(shí),首先要確保已經(jīng)連接組件時(shí),首先要確保已經(jīng)連接上數(shù)據(jù)庫(kù),可以通過(guò)對(duì)象編輯器來(lái)編輯。上數(shù)據(jù)庫(kù),可以通過(guò)對(duì)象編輯器來(lái)編輯。TADOCommand對(duì)應(yīng)的是對(duì)應(yīng)的是ADO中的中的command對(duì)象。對(duì)象。TADOCommand更通常的是用來(lái)執(zhí)行更通常的是用來(lái)執(zhí)行DDL SQL命令,或者執(zhí)行一命令,或者執(zhí)行一個(gè)不需要返回結(jié)果的存儲(chǔ)過(guò)程。對(duì)于那些不需要返回結(jié)果的個(gè)不需要返回結(jié)果的存儲(chǔ)過(guò)

42、程。對(duì)于那些不需要返回結(jié)果的SQL語(yǔ)句語(yǔ)句,使用,使用TADODataSet組件,組件,TADOQuery或者或者TADOStoredProc組件組件會(huì)更好。會(huì)更好。TADOCommand組件執(zhí)行的命令是在組件執(zhí)行的命令是在CommandText屬性中說(shuō)明的屬性中說(shuō)明的。如果有參數(shù)值的話,它們是在。如果有參數(shù)值的話,它們是在Parameters屬性中說(shuō)明的。通過(guò)調(diào)用屬性中說(shuō)明的。通過(guò)調(diào)用Excute方法執(zhí)行命令。方法執(zhí)行命令。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組33 TADOcommand組件可以通過(guò)組件可以通過(guò)TADOConnection組件與數(shù)據(jù)庫(kù)相組件與數(shù)據(jù)庫(kù)相連

43、,也可以通過(guò)在自己的連,也可以通過(guò)在自己的ConnectionString屬性中說(shuō)明連接的信息與屬性中說(shuō)明連接的信息與數(shù)據(jù)庫(kù)取得聯(lián)系。下面是數(shù)據(jù)庫(kù)取得聯(lián)系。下面是TADOCommand的一些重要屬性。的一些重要屬性。(1)CommandText CommandText屬性用來(lái)說(shuō)明要使用屬性用來(lái)說(shuō)明要使用ADO操作組件執(zhí)行的命令內(nèi)操作組件執(zhí)行的命令內(nèi)容。容。CommandText屬性值是文本形式的命令、如果操作中包含了一些屬性值是文本形式的命令、如果操作中包含了一些參數(shù)(像在執(zhí)行參數(shù)(像在執(zhí)行SQL語(yǔ)句或者一個(gè)存儲(chǔ)過(guò)程是的情況),我們可以通語(yǔ)句或者一個(gè)存儲(chǔ)過(guò)程是的情況),我們可以通過(guò)過(guò)Param

44、eters屬性值來(lái)設(shè)定。屬性值來(lái)設(shè)定。(2)CommandType CommandType屬性用來(lái)說(shuō)明在屬性用來(lái)說(shuō)明在CommandText中說(shuō)明的操作類中說(shuō)明的操作類型。型。CommandType屬性值應(yīng)該與屬性值應(yīng)該與CommandText中所說(shuō)明操作相一致中所說(shuō)明操作相一致。當(dāng)。當(dāng)CommandText屬性內(nèi)容為數(shù)據(jù)表格名時(shí),屬性內(nèi)容為數(shù)據(jù)表格名時(shí),CommandType的屬性的屬性值就應(yīng)當(dāng)為值就應(yīng)當(dāng)為cmdTable或者是或者是cmdTableDirect。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組34 (3)CommandObject 通過(guò)設(shè)置通過(guò)設(shè)置Connect

45、ionObject屬性可以取得與其相對(duì)應(yīng)的屬性可以取得與其相對(duì)應(yīng)的ADO操作操作對(duì)象進(jìn)行直接的聯(lián)系。通過(guò)這種訪問(wèn),應(yīng)用程序可以使用與其想對(duì)應(yīng)的對(duì)象進(jìn)行直接的聯(lián)系。通過(guò)這種訪問(wèn),應(yīng)用程序可以使用與其想對(duì)應(yīng)的ADO操作對(duì)象的方法操作對(duì)象的方法 和屬性。在沒(méi)有與之對(duì)應(yīng)的和屬性。在沒(méi)有與之對(duì)應(yīng)的ADO操作對(duì)象,而使操作對(duì)象,而使用用TADOCommand組件與數(shù)據(jù)庫(kù)相連時(shí),這個(gè)屬性顯得尤為重要。組件與數(shù)據(jù)庫(kù)相連時(shí),這個(gè)屬性顯得尤為重要。 TADOCommand組件是用來(lái)執(zhí)行對(duì)數(shù)據(jù)庫(kù)的操作的。組件是用來(lái)執(zhí)行對(duì)數(shù)據(jù)庫(kù)的操作的。首先,在首先,在CommandText屬性中說(shuō)明使用屬性中說(shuō)明使用ADO操作組件

46、執(zhí)行操作的內(nèi)操作組件執(zhí)行操作的內(nèi)容。在程序設(shè)計(jì)階段,在對(duì)象觀察器中通過(guò)容。在程序設(shè)計(jì)階段,在對(duì)象觀察器中通過(guò)CommandText屬性欄中輸屬性欄中輸入命令(一條入命令(一條SQL語(yǔ)句,一個(gè)數(shù)據(jù)表或者一個(gè)過(guò)程名)。在運(yùn)行階段語(yǔ)句,一個(gè)數(shù)據(jù)表或者一個(gè)過(guò)程名)。在運(yùn)行階段,可以將,可以將CommandText屬性值作為字符串類型數(shù)據(jù)設(shè)定。如果有需要屬性值作為字符串類型數(shù)據(jù)設(shè)定。如果有需要的話,可以在的話,可以在CommandType屬性中顯式的定義執(zhí)行操作的類型。屬性中顯式的定義執(zhí)行操作的類型。CommandType屬性包含的選項(xiàng)有:屬性包含的選項(xiàng)有:(1)cmdText(當(dāng)執(zhí)行的為一條(當(dāng)執(zhí)行的

47、為一條SQL語(yǔ)句時(shí))。語(yǔ)句時(shí))。(2)cmdTable(當(dāng)執(zhí)行操作為一個(gè)數(shù)據(jù)表格時(shí))。(當(dāng)執(zhí)行操作為一個(gè)數(shù)據(jù)表格時(shí))。(3)cmdStoredProc(當(dāng)執(zhí)行操作問(wèn)為一個(gè)存儲(chǔ)過(guò)程時(shí))。(當(dāng)執(zhí)行操作問(wèn)為一個(gè)存儲(chǔ)過(guò)程時(shí))。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組35TADODataSet組件是用于獲取和操作組件是用于獲取和操作ADO數(shù)據(jù)的主要組件。該組件數(shù)據(jù)的主要組件。該組件可以操縱數(shù)據(jù)表、執(zhí)行可以操縱數(shù)據(jù)表、執(zhí)行SQL查詢和存儲(chǔ)過(guò)程并且能通過(guò)查詢和存儲(chǔ)過(guò)程并且能通過(guò)TADOConnection組件直接與一個(gè)數(shù)據(jù)存儲(chǔ)建立連接。組件直接與一個(gè)數(shù)據(jù)存儲(chǔ)建立連接。TADODataSe

48、t是最常用的是最常用的ADO數(shù)據(jù)集組件。數(shù)據(jù)集組件。TADODataSet可以從可以從ADO數(shù)據(jù)庫(kù)內(nèi)讀取一張或者多張數(shù)據(jù)表。這種讀取可以是直接讀取數(shù)數(shù)據(jù)庫(kù)內(nèi)讀取一張或者多張數(shù)據(jù)表。這種讀取可以是直接讀取數(shù)據(jù)表格,也可以通過(guò)據(jù)表格,也可以通過(guò)SQL語(yǔ)句訪問(wèn)。在使用語(yǔ)句訪問(wèn)。在使用TADODataSet訪問(wèn)數(shù)據(jù)之訪問(wèn)數(shù)據(jù)之前需要建立它與數(shù)據(jù)庫(kù)之間的聯(lián)系。前需要建立它與數(shù)據(jù)庫(kù)之間的聯(lián)系。TADOQuery組件通過(guò)一個(gè)合法的組件通過(guò)一個(gè)合法的SQL語(yǔ)句或執(zhí)行語(yǔ)句或執(zhí)行DDL(Data Definition Language),例如),例如“Create Table”SQL語(yǔ)句來(lái)獲取和操作語(yǔ)句來(lái)獲取和操

49、作數(shù)據(jù)集的元素,該組件可以直接連接到數(shù)據(jù)設(shè)備上或通過(guò)數(shù)據(jù)集的元素,該組件可以直接連接到數(shù)據(jù)設(shè)備上或通過(guò)TADOConnection組件連接到數(shù)據(jù)庫(kù)設(shè)備上。組件連接到數(shù)據(jù)庫(kù)設(shè)備上。通過(guò)通過(guò)TADOQuery組件的組件的SQL屬性可以設(shè)計(jì)各種屬性可以設(shè)計(jì)各種SQL語(yǔ)句,在該屬性語(yǔ)句,在該屬性中不僅可以使用數(shù)據(jù)查詢語(yǔ)句,還可以使用各種標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)話語(yǔ)句中不僅可以使用數(shù)據(jù)查詢語(yǔ)句,還可以使用各種標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)話語(yǔ)句,如:,如:DELETE、INSERT和和UPDATE等。等。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組36 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)通常要針對(duì)一個(gè)特定的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)通常

50、要針對(duì)一個(gè)特定的環(huán)境與目標(biāo),把與之相關(guān)的數(shù)據(jù)以某種數(shù)據(jù)模型進(jìn)環(huán)境與目標(biāo),把與之相關(guān)的數(shù)據(jù)以某種數(shù)據(jù)模型進(jìn)行存儲(chǔ),然后,按照一些特定的規(guī)則對(duì)這些數(shù)據(jù)進(jìn)行存儲(chǔ),然后,按照一些特定的規(guī)則對(duì)這些數(shù)據(jù)進(jìn)行分析、整理,以實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、組織及處理。行分析、整理,以實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、組織及處理。 本節(jié)以學(xué)生信息管理系統(tǒng)的開發(fā)為案例,以本節(jié)以學(xué)生信息管理系統(tǒng)的開發(fā)為案例,以Delphi7.0為開發(fā)工具,介紹為開發(fā)工具,介紹SQL Server數(shù)據(jù)數(shù)據(jù)庫(kù)應(yīng)用程序的實(shí)現(xiàn)過(guò)程與方法。庫(kù)應(yīng)用程序的實(shí)現(xiàn)過(guò)程與方法。 學(xué)生信息管理系統(tǒng)是一個(gè)非常通用的信息管學(xué)生信息管理系統(tǒng)是一個(gè)非常通用的信息管理系統(tǒng),很多大、中、小學(xué)校都需

51、要自己的學(xué)生管理系統(tǒng),很多大、中、小學(xué)校都需要自己的學(xué)生管理系統(tǒng),以便對(duì)本校學(xué)生的基本信息和學(xué)習(xí)情況進(jìn)理系統(tǒng),以便對(duì)本校學(xué)生的基本信息和學(xué)習(xí)情況進(jìn)行管理。要進(jìn)行系統(tǒng)軟件的開發(fā),首先必須在行管理。要進(jìn)行系統(tǒng)軟件的開發(fā),首先必須在SQL的企業(yè)管理器建立數(shù)據(jù)庫(kù)。打開的企業(yè)管理器建立數(shù)據(jù)庫(kù)。打開“企業(yè)管理企業(yè)管理器器”,然后再數(shù)據(jù)庫(kù)右鍵后,點(diǎn)擊建立數(shù)據(jù)庫(kù),既,然后再數(shù)據(jù)庫(kù)右鍵后,點(diǎn)擊建立數(shù)據(jù)庫(kù),既可以建立一個(gè)自己的數(shù)據(jù)庫(kù)了,如圖所示??梢越⒁粋€(gè)自己的數(shù)據(jù)庫(kù)了,如圖所示。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組37 根據(jù)事先設(shè)計(jì)好的數(shù)據(jù)字典進(jìn)行數(shù)據(jù)表的創(chuàng)根據(jù)事先設(shè)計(jì)好的數(shù)據(jù)字典進(jìn)行

52、數(shù)據(jù)表的創(chuàng)建,例如學(xué)生表的數(shù)據(jù)字典如下表所示:建,例如學(xué)生表的數(shù)據(jù)字典如下表所示:字段名字段名代代 碼碼類類 型型約約 束束學(xué)號(hào)s_nochar(6)主鍵姓名s_namechar(10)非空性別s_sexchar(2)只取男、女出生日期s_birthdaydata入學(xué)成績(jī)s_scorenumber(5,1)附加分s_addfnumber(3,1)班級(jí)編碼class_nochar(5)與班級(jí)表中class_no外鍵關(guān)聯(lián)數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組38 在數(shù)據(jù)庫(kù)的表的選項(xiàng)中新建表,按照上述數(shù)據(jù)字典在數(shù)據(jù)庫(kù)的表的選項(xiàng)中新建表,按照上述數(shù)據(jù)字典進(jìn)行表格屬性的輸入,例如主

53、鍵的設(shè)定,參照性約束設(shè)進(jìn)行表格屬性的輸入,例如主鍵的設(shè)定,參照性約束設(shè)定以及是否級(jí)聯(lián)等。重復(fù)上述步驟,直至把相關(guān)數(shù)據(jù)表定以及是否級(jí)聯(lián)等。重復(fù)上述步驟,直至把相關(guān)數(shù)據(jù)表輸入數(shù)據(jù)庫(kù)為止。輸入數(shù)據(jù)庫(kù)為止。 在數(shù)據(jù)庫(kù)中建立表格之后,接下來(lái)在在數(shù)據(jù)庫(kù)中建立表格之后,接下來(lái)在Delphi中進(jìn)中進(jìn)行前臺(tái)界面的開發(fā)。行前臺(tái)界面的開發(fā)。(1)新建工程和窗口,如圖)新建工程和窗口,如圖11.4所示:所示:數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組39(2)制作無(wú)數(shù)據(jù)庫(kù)導(dǎo)入的基本界面,這一步是數(shù)據(jù)導(dǎo))制作無(wú)數(shù)據(jù)庫(kù)導(dǎo)入的基本界面,這一步是數(shù)據(jù)導(dǎo)入的鋪墊,首先是把框架打和空間選擇好然后導(dǎo)入數(shù)據(jù)入的鋪墊

54、,首先是把框架打和空間選擇好然后導(dǎo)入數(shù)據(jù)庫(kù)就行了。例如控件庫(kù)就行了。例如控件DBGrid,見圖,見圖11.5 DBGrid控控件:件:數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組40(3)在)在Form中對(duì)相關(guān)的控件的屬性進(jìn)行設(shè)置,如中對(duì)相關(guān)的控件的屬性進(jìn)行設(shè)置,如DBGrid、DBEdit、Button、Label等等空間的屬性進(jìn)行設(shè)置,例如其數(shù)據(jù)源的屬性,數(shù)據(jù)等等空間的屬性進(jìn)行設(shè)置,例如其數(shù)據(jù)源的屬性,數(shù)據(jù)范圍等等相關(guān)屬性的操作。范圍等等相關(guān)屬性的操作。(4)進(jìn)行數(shù)據(jù)庫(kù)的導(dǎo)入,基于)進(jìn)行數(shù)據(jù)庫(kù)的導(dǎo)入,基于ADO快捷而方便的特點(diǎn),本文使用的數(shù)快捷而方便的特點(diǎn),本文使用的數(shù)據(jù)源均用據(jù)源均用ADO導(dǎo)入和鏈接,使用的主要控件是導(dǎo)入和鏈接,使用的主要控件是ADOConnection,ADOTable,ADOQuery。 數(shù)據(jù)庫(kù)的導(dǎo)入首先要建立數(shù)據(jù)源:數(shù)據(jù)庫(kù)的導(dǎo)入首先要建立數(shù)據(jù)源:(5)導(dǎo)入以后,在)導(dǎo)入以后,在DateSourse里的里的DateSet里選擇要導(dǎo)入的數(shù)據(jù),然里選擇要導(dǎo)入的數(shù)據(jù),然后就可以讓控件來(lái)選擇數(shù)據(jù)源,從而完成對(duì)數(shù)據(jù)的導(dǎo)入。后就可以讓控件來(lái)選擇數(shù)據(jù)源,從而完成對(duì)數(shù)據(jù)的導(dǎo)入。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用基礎(chǔ)教材編寫組4

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論