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

下載本文檔

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

文檔簡介

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

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

3、)ISAM數(shù)據(jù)庫數(shù)據(jù)庫(3)ODBC數(shù)據(jù)庫數(shù)據(jù)庫2. Delphi數(shù)據(jù)庫連接與訪問數(shù)據(jù)庫連接與訪問數(shù)據(jù)庫訪問機制數(shù)據(jù)庫訪問機制數(shù)據(jù)庫連接控件數(shù)據(jù)庫連接控件BDETdatabase/通過BDE管理器ADOTADOConnectionDbExpressTSQLConnection數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組53. Delphi訪問數(shù)據(jù)的接口訪問數(shù)據(jù)的接口數(shù)據(jù)訪問過程涉及三個組成部分:數(shù)據(jù)訪問過程涉及三個組成部分:(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ù)訪問接數(shù)據(jù)使用者和數(shù)據(jù)提供者之間的橋梁就是數(shù)據(jù)訪問接口對象??趯ο?。nDelphi的三種數(shù)據(jù)訪問接口的三種數(shù)據(jù)訪問接口n數(shù)據(jù)訪問對象(數(shù)據(jù)訪問對象(DAO)。)。n遠程數(shù)據(jù)對象(遠程數(shù)據(jù)對象(RDO)nActivcX數(shù)據(jù)對象(數(shù)據(jù)對象(ADO)n這些接口分別代表了數(shù)據(jù)訪問技術(shù)的不同發(fā)展階段。這些接口分別代表了數(shù)據(jù)訪問技術(shù)的不同發(fā)展階段。數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組6組件組件組件基本用途介紹組件基本用途介紹TTable通過數(shù)據(jù)引擎,把數(shù)據(jù)表中的數(shù)據(jù)送至TDataSource組件TQuer

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

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

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

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

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

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

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

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

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

14、個布爾數(shù)(True/False)來表示的。)來表示的。 可以通過下列方法設(shè)置可以通過下列方法設(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ù)集中打開一個)在數(shù)據(jù)集中打開一個BDE記錄指針記錄指針 (4)觸發(fā)數(shù)據(jù)集的)觸發(fā)數(shù)據(jù)集的AfterOpen事件事件uDatabaseName屬性屬性 DatabaseName屬性是用來說明當前數(shù)據(jù)集的來源,即應(yīng)屬性是用來說明當前數(shù)據(jù)集的來源,即應(yīng)用程序所利用的數(shù)據(jù)庫的名字。它可以是用程序所利用的數(shù)據(jù)庫的名字。它可以是BDE

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

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

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

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

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

20、t向數(shù)據(jù)集提交修改的記錄數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組20 在在TTable組件中實現(xiàn)數(shù)據(jù)庫記錄的查詢依靠組件中實現(xiàn)數(shù)據(jù)庫記錄的查詢依靠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)。同時,存儲當前查詢值緩沖區(qū)的當前內(nèi)容。組件置于

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

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

23、到數(shù)據(jù)集中語查詢值精確符合的一個特定的記錄或數(shù)據(jù)集中語查詢值最相近的記錄。語查詢值最相近的記錄。數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組22(5)GotoKey 調(diào)用調(diào)用GotoKey方法可以用來查詢一條特定的記錄,查詢值是方法可以用來查詢一條特定的記錄,查詢值是已經(jīng)用已經(jīng)用SetKey或者或者EditKey方法與方法與Fields屬性值確定了的。屬性值確定了的。 下面舉例說明下面舉例說明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í)行查詢過程執(zhí)行查詢過程end;end;數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組23uTQuery是一個建立在是一個建立在SQL基礎(chǔ)上,專門用于對數(shù)據(jù)庫中的數(shù)據(jù)進基礎(chǔ)上,專門用于對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢的組件。行查詢的組件。TQuery組件使用的是組件使用的是SQL語言,可以一次訪問數(shù)據(jù)語言,可以一次訪問數(shù)據(jù)庫的一個或者多

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

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

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

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

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

30、內(nèi)容UniDirection1決定在查詢數(shù)據(jù)結(jié)果時,是否允許BDE的記錄指針雙向移動數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組27uDelphi7.0提供了一套采用提供了一套采用ADO的組件。利用這些組件,用戶可以的組件。利用這些組件,用戶可以與與ADO數(shù)據(jù)庫相聯(lián)系,讀取數(shù)據(jù)庫中的數(shù)據(jù)并執(zhí)行相應(yīng)的操作。數(shù)據(jù)庫相聯(lián)系,讀取數(shù)據(jù)庫中的數(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之間都有這種類似的對應(yīng)關(guān)系。之間都有這種類似的對應(yīng)關(guān)系。u通過通過ADO數(shù)據(jù)集訪問組件,可以不借助數(shù)據(jù)集訪問組件,可以不借助BDE引擎而是通過微軟的引擎而是通過微軟的OLE BD來訪問更為廣泛的數(shù)據(jù)庫中的數(shù)據(jù)。來訪問更為廣泛的數(shù)據(jù)庫中的數(shù)據(jù)。ADO數(shù)據(jù)集訪問組件數(shù)據(jù)集訪問組件與常用的數(shù)據(jù)訪問組件是并列的關(guān)系,由于與常用的數(shù)據(jù)訪問組件是并列的關(guān)系,由于ADO數(shù)據(jù)集訪問組件是數(shù)據(jù)集訪問組件是從常用數(shù)據(jù)訪問組件發(fā)展而來,它的許多用法和常用數(shù)

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

33、。事事 件件含含 義義ConnectionString指明數(shù)據(jù)庫連接信息的屬性Connected用來說明一個與數(shù)據(jù)庫的連接是否被激活ConnectionObject提供對ADO連接對象的直接訪問ConnectionTimeout聲明連接可能需要的最長時間數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組數(shù)據(jù)庫技術(shù)與應(yīng)用基礎(chǔ)教材編寫組291. ConnectionString 通過設(shè)置通過設(shè)置ConnectionString來指明將來指明將ADO聯(lián)系組件與數(shù)據(jù)聯(lián)系組件與數(shù)據(jù)集相連的必要信息。集相連的必要信息。ConnectionString的屬性值包含了一個或者的屬性值包含了一個或者多個變元。如果是包含多個變元,那

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論