![第10章 Delphi的數據訪問方法_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/c9bea45d-2019-4e83-99ed-c283bb33da0d/c9bea45d-2019-4e83-99ed-c283bb33da0d1.gif)
![第10章 Delphi的數據訪問方法_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/c9bea45d-2019-4e83-99ed-c283bb33da0d/c9bea45d-2019-4e83-99ed-c283bb33da0d2.gif)
![第10章 Delphi的數據訪問方法_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/c9bea45d-2019-4e83-99ed-c283bb33da0d/c9bea45d-2019-4e83-99ed-c283bb33da0d3.gif)
![第10章 Delphi的數據訪問方法_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/c9bea45d-2019-4e83-99ed-c283bb33da0d/c9bea45d-2019-4e83-99ed-c283bb33da0d4.gif)
![第10章 Delphi的數據訪問方法_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/c9bea45d-2019-4e83-99ed-c283bb33da0d/c9bea45d-2019-4e83-99ed-c283bb33da0d5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組第第10章章 Delphi的數據訪問方法的數據訪問方法Delphi7.0的的BDE組件、組件、Delphi7.0的的ADO組件、數據庫應用系統開發(fā)案例組件、數據庫應用系統開發(fā)案例Delphi的數據訪問方法及使用的數據訪問方法及使用數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組2學習目標學習目標u了解:了解:nDelphi的數據庫管理功能;數據庫應用系統開發(fā)工的數據庫管理功能;數據庫應用系統開發(fā)工具的使用及數據庫應用程序的開發(fā)過程。具的使用及數據庫應用程序的開發(fā)過程。u理解:理解:nDelphi的相關組件,以及訪問數據庫的
2、相關接口技的相關組件,以及訪問數據庫的相關接口技術。術。u掌握:掌握:nDelphi與與SQL Server數據庫的連接方法;數據數據庫的連接方法;數據庫的編輯和查詢操作等方法。庫的編輯和查詢操作等方法。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組310.1 Delphi7.0的的BDE組件組件u10.1.1 BDE組件頁組件頁u10.1.2 TDatabase組件組件u10.1.3 TTable組件組件u10.1.4 TQuery組件組件數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組41. Delphi訪問的數據庫類型訪問的數據庫類型(1)Jet數據庫數據庫(2
3、)ISAM數據庫數據庫(3)ODBC數據庫數據庫2. Delphi數據庫連接與訪問數據庫連接與訪問數據庫訪問機制數據庫訪問機制數據庫連接控件數據庫連接控件BDETdatabase/通過BDE管理器ADOTADOConnectionDbExpressTSQLConnection數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組53. Delphi訪問數據的接口訪問數據的接口數據訪問過程涉及三個組成部分:數據訪問過程涉及三個組成部分:(1)數據提供者數據提供者(Data Provider)(2)數據服務提供者數據服務提供者(Data Service Provider)(3)數據使用者數據
4、使用者(Data Consumer)n數據使用者和數據提供者之間的橋梁就是數據訪問接數據使用者和數據提供者之間的橋梁就是數據訪問接口對象??趯ο?。nDelphi的三種數據訪問接口的三種數據訪問接口n數據訪問對象(數據訪問對象(DAO)。)。n遠程數據對象(遠程數據對象(RDO)nActivcX數據對象(數據對象(ADO)n這些接口分別代表了數據訪問技術的不同發(fā)展階段。這些接口分別代表了數據訪問技術的不同發(fā)展階段。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組6組件組件組件基本用途介紹組件基本用途介紹TTable通過數據引擎,把數據表中的數據送至TDataSource組件TQuer
5、y執(zhí)行SQL語句TStoreProc允許應用程序接觸服務器存儲過程TDataBase建立一個與數據庫的持久性聯系TSession對你所應用的TDatabase組件提供全方位的支持TBatchMoveBatchMove用于復制一個數據庫表格結構或者它的數據TUpdataSQL允許用戶使用Delphi7.0的緩存數據的更新特性數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組7u對數據庫進行訪問之前必須使用對數據庫進行訪問之前必須使用TDatabase和數據和數據庫進行相應的連接,再對數據集進行相應的操作。庫進行相應的連接,再對數據集進行相應的操作。u在下列場合需要用到在下列場合需要用到
6、TdataBase組件:組件:(1)建立與數據庫的永久連接)建立與數據庫的永久連接(2)數據庫服務器要求用戶的登錄)數據庫服務器要求用戶的登錄(3)控制事務的處理)控制事務的處理(4)應用程序制定的)應用程序制定的BDE數據庫的別名數據庫的別名數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組8方方 法法含含 義義AliasName指明連接中的數據庫的別名Connected標志聯系是否有效DatabaseName指明與該TDatabase組件相連的數據庫的名字DataSetCount指明與該TDatabase組件相連的數據庫的數目DataSets給出處于活動狀態(tài)的所有數據集的索引數組
7、Directory指明Paradox或dBASE數據庫的工作路徑DriverName指明數據庫的BDE的驅動名ExclusIve使應用程序享有對數據庫訪問的專有權Handle指明BDE數據庫的句柄數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組9事事 件件含含 義義HandleShared指明是否共享一個數據庫的句柄InTransaction標志著數據庫是否在事件處理中IsSQLBased指明該TDatabase組件使用的是BDE SQL Links driver還是BDEODBCKeepConnection指明在沒有數據集打開的情況下,應用程序是否保持與數據庫的聯系Locale指
8、明該TDatabase組件的BDE語言驅動器LogInPrompt指明在建立聯系時,是否顯示標準的登錄對話框Params包含聯系中的參數信息SessionName指明該TDatabase組件使用的Session組件名Session指向與該TDatabase組件相連的Session組件數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組10事事 件件含含 義義ReadOnly指明此聯系提供只讀訪問Temporary指明該TDatabase組件是否為暫時的TransIsoLation說明BDE控制database事務的獨立等級nConnection屬性 當Connection=True時,
9、表明可以在不打開數據集的情況下與數據庫相連。 當Connection=False時,表明TDataBase組件沒有與任何數據庫相連。nKeepConnection屬性 當KeepConnection=True時,表示聯系會被保持。nDataSets屬性 應用程序可以通過使用DataSets屬性值來訪問與該TDatabase組件相連的所有處于打開狀態(tài)的數據集。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組11u在在Delphi中,訪問數據的基本單元是數據集對中,訪問數據的基本單元是數據集對象。應用程序正是通過數據集組件來訪問數據庫象。應用程序正是通過數據集組件來訪問數據庫的。的。u
10、一個數據集對象就代表了數據庫的一張表格,或一個數據集對象就代表了數據庫的一張表格,或者是訪問數據庫的一個查詢或者存儲過程。者是訪問數據庫的一個查詢或者存儲過程。uTTable隸屬于數據集組件,它從數據集繼承而隸屬于數據集組件,它從數據集繼承而來,有著許多共同的屬性、方法和事件。來,有著許多共同的屬性、方法和事件。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組12事事 件件含含 義義DatabaseName表明數據集聯系的數據庫別名DBHandle表明數據集所在的數據庫BDE的句柄DefaultIndex表明一個打開表格中的數據是否按默認的索引排序Eof標志著記錄指針是否停留在數據
11、集的最后一個記錄上Exclusive允許用戶以專有的方式打開一個Paradox或dBASE表格Fields指向數據集的字段列表Filter表明當前數據集過濾的文本內容Filtered表明一個數據集的過濾是否被激活FilterOptions設置過濾選項Handle允許程序直接調用API函數數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組13事事 件件含含 義義IndexFieldName顯示數據庫表格所采用的索引排序的字段名IndexFields指出數據庫中的字段名列表IndexName用來為數據庫表格制定當前排列索引MasterFields在主表中指定一個或者多個字段以建立主附表之
12、間的聯系MasterSource指定作為數據集主表的data source組件的名字Name該組件在被其他組件引用時的名字Modified標志著當前記錄是否被修改ObjectView指明字段在Fields property中是層次排列還是平鋪RecordCount顯示與數據集相連的記錄總數數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組14事事 件件 含含 義義RecordCount顯示與數據集相連的記錄總數ReadOnly明一個數據庫表格在此應用程序中是否只讀SessionName指定與數據集相連的Session的名字StoreDefs指出數據庫表格的字段和索引與數據模塊一致,還
13、是與窗體一致TableName指明該組件指向的數據庫表格的名字TableStyle指出當前操作的數據表格的類型UpdateMode決定BDE如何在SQL數據庫中查詢更新記錄UpdateObject指出在允許緩存更新時,用來更新只讀記錄的update object組件數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組15uActive屬性屬性 Active屬性是用來說明數據庫文件的打開狀態(tài)。應用屬性是用來說明數據庫文件的打開狀態(tài)。應用Active屬性來決定及設定一個數據集組件數據庫數據之間的聯系。屬性來決定及設定一個數據集組件數據庫數據之間的聯系。它的屬性值是一個布爾數(它的屬性值是一
14、個布爾數(True/False)來表示的。)來表示的。 可以通過下列方法設置可以通過下列方法設置Active的屬性值為的屬性值為True。 (1)觸發(fā)數據集的)觸發(fā)數據集的BeforeOpen事件事件 (2)設置數據集的狀態(tài)為)設置數據集的狀態(tài)為dsBrowse (3)在數據集中打開一個)在數據集中打開一個BDE記錄指針記錄指針 (4)觸發(fā)數據集的)觸發(fā)數據集的AfterOpen事件事件uDatabaseName屬性屬性 DatabaseName屬性是用來說明當前數據集的來源,即應屬性是用來說明當前數據集的來源,即應用程序所利用的數據庫的名字。它可以是用程序所利用的數據庫的名字。它可以是BDE
15、定義的數據庫別名,定義的數據庫別名,如如DBDEMOS;也可以是數據庫文件,像;也可以是數據庫文件,像Paradox和和dBASE等等文件所在的路徑;還可以是由文件所在的路徑;還可以是由TDataBase組件定義的數據庫名組件定義的數據庫名數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組16uTableName屬性屬性 它是用來說明這個它是用來說明這個TTable組件所對應的是數據庫中的哪一張組件所對應的是數據庫中的哪一張數據庫表格。它和數據庫表格。它和DatabaseName一樣,實在設定階段給定,它一樣,實在設定階段給定,它在在DatabaseName設定之后給出。設定之后給出
16、。uFields屬性屬性 Fields屬性是用來指出數據集的字段列表。應用屬性是用來指出數據集的字段列表。應用Fields屬屬性可以訪問數據庫表格中的字段組合。性可以訪問數據庫表格中的字段組合。 對于用戶來說,利用對于用戶來說,利用Fields屬性查詢字段是非常有用的,有屬性查詢字段是非常有用的,有以下兩點原因:以下兩點原因: (1)可以重溫數據集的部分或者全部字段。)可以重溫數據集的部分或者全部字段。 (2)可以對運行時內部的數據結構未知的隱藏表格進行操作。)可以對運行時內部的數據結構未知的隱藏表格進行操作。uFilter屬性屬性 Filter屬性允許用戶定義一個數據集過濾器。當過濾被數據屬
17、性允許用戶定義一個數據集過濾器。當過濾被數據集應用時,只有那些滿足過濾器條件的記錄才會被顯示。集應用時,只有那些滿足過濾器條件的記錄才會被顯示。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組17事事 件件含含 義義AddIndex為數據庫表格建立一個新的索引Append向數據集中添加一條新的空記錄ApplyRange設定數據集的檢索范圍Cancel在對當前的記錄的更改尚未提交時撤銷它們ClearFields清除當前記錄的所有字段內容Close關閉一個數據集Create產生一個數據庫表格組件Delete刪除當前記錄,將記錄指針指向下一條記錄CreateTable建立一個使用新的結構
18、信息的表格EditKey將Table組件置于查詢狀態(tài)Edit允許用戶編輯數據集中的數據數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組18事事 件件含含 義義FieldByName根據特定的字段名查找字段FindField在數據集中查詢一個特定的字段FindKey查找包含特定字段值的記錄GetFieldNames讀取一個數據集中所有字段名的列表GetIndexNames讀取數據庫表格中有效的索引列表GotoKey將記錄指針移至一條與當前查詢值匹配的記錄Insert向數據集中插入一條新的空記錄Locate查找一條特定的記錄并使之成為當前記錄MoveBy將記錄指針置于數據集中與當前記錄
19、相關的一條記錄處Open打開一個數據集數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組19事事 件件含含 義義Refresh從數據集中取得數據來更新數據集RenameTable對與此表格組件相關的Paradox或dBASE表進行更名操作SetFields設置一個記錄中所有的字段值SetKey在查詢前設定查詢值和檢索范圍SetRange設置并應用一個檢索范圍的起始值和結束值SetRangeEnd指定檢索范圍的結束記錄SetRangeStart指定檢索范圍的起始記錄UnlockTable解除對Paradox或dBASE表格鎖定UpdateRecord對一個記錄更新觸發(fā)一個數據事件Pos
20、t向數據集提交修改的記錄數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組20 在在TTable組件中實現數據庫記錄的查詢依靠組件中實現數據庫記錄的查詢依靠EditKey、FieldByName、FindKey、FindNearest、GotoKey、GotoNearest、Locate以及以及SetKey這些方法。下面分別介紹前這些方法。下面分別介紹前5種具體的使用方法。種具體的使用方法。(1)EditKey 調用調用EditKey方法將數據集置于方法將數據集置于dsSetKey狀態(tài),也就是將狀態(tài),也就是將TTable組件置于查詢狀態(tài)。同時,存儲當前查詢值緩沖區(qū)的當前內容。組件置于
21、查詢狀態(tài)。同時,存儲當前查詢值緩沖區(qū)的當前內容。(2)FieldByName FieldByName函數的基本格式如下:函數的基本格式如下:function FieldByName(const FieldName:string):):TFiled; FieldByName方法是根據一個特定的字段名查詢一個字段。方法是根據一個特定的字段名查詢一個字段。FieldName是一個已存在的字段名。是一個已存在的字段名。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組21(3)FindKey FindKey函數的基本格式如下:函數的基本格式如下:function FindKey(const
22、KeyValue:array of const):):Boolean; FindKey方法相當于將設置表格組件的查找狀態(tài)、設置查詢以方法相當于將設置表格組件的查找狀態(tài)、設置查詢以及在數據集中查詢者三個步驟的功能集中在一個方法調用中實現。及在數據集中查詢者三個步驟的功能集中在一個方法調用中實現。(4)FindNearest FindNearest方法與方法與FindKey方法很相似,不同之處在于方法很相似,不同之處在于FindNearest方法不要求精確查詢。調用方法不要求精確查詢。調用FindNearest方法將移動方法將移動記錄指針到數據集中語查詢值精確符合的一個特定的記錄或數據集中記錄指針
23、到數據集中語查詢值精確符合的一個特定的記錄或數據集中語查詢值最相近的記錄。語查詢值最相近的記錄。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組22(5)GotoKey 調用調用GotoKey方法可以用來查詢一條特定的記錄,查詢值是方法可以用來查詢一條特定的記錄,查詢值是已經用已經用SetKey或者或者EditKey方法與方法與Fields屬性值確定了的。屬性值確定了的。 下面舉例說明下面舉例說明GotoKey的使用方法:的使用方法:procedure TForm1.Button1Click(Sender:TObject);beginwith Table1 dobeginEditK
24、ey; 將將Table1置于查詢狀態(tài)置于查詢狀態(tài)FieldByName(Country).AsString:=China; 設置查詢值設置查詢值FieldByName(City).AsString:=Beijing; 設置查詢值設置查詢值GotoKey; 執(zhí)行查詢過程執(zhí)行查詢過程end;end;數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組23uTQuery是一個建立在是一個建立在SQL基礎上,專門用于對數據庫中的數據進基礎上,專門用于對數據庫中的數據進行查詢的組件。行查詢的組件。TQuery組件使用的是組件使用的是SQL語言,可以一次訪問數據語言,可以一次訪問數據庫的一個或者多
25、個表格。庫的一個或者多個表格。TQuery組件訪問的表格可以是在遠程服務組件訪問的表格可以是在遠程服務器的數據庫中(例如:器的數據庫中(例如:Sybase、SQLServer、Oracle、Infomix、DB2和和InterBase),也可以上當地的表格(例如:),也可以上當地的表格(例如:Paradox、dBASE、Access和和FoxPro),還可以是),還可以是ODBC數據數據庫。庫。uTQuery組件的重要性體現在:組件的重要性體現在:(1)可同時訪問多張表格)可同時訪問多張表格(2)自動訪問基本表格的子集,而不是訪問所有的數據)自動訪問基本表格的子集,而不是訪問所有的數據數據庫技
26、術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組24TQuery和和TTable組件同屬于數據集組件,它們有著許多相似的地組件同屬于數據集組件,它們有著許多相似的地方,但也有各自特殊的地方,下面為其主要區(qū)別:方,但也有各自特殊的地方,下面為其主要區(qū)別:(1)TQuery組件主要功能是用來支持組件主要功能是用來支持SQL語言訪問本地或者遠程語言訪問本地或者遠程數據庫,所以,數據庫,所以,TQuery組件提供了一系列與組件提供了一系列與TTable組件不同的屬組件不同的屬性、方法和事件。性、方法和事件。(2)TQuery組件允許用戶同時訪問多個表,而組件允許用戶同時訪問多個表,而TTable組
27、件一次只組件一次只能訪問一個表格。能訪問一個表格。(3)TQuery組件和組件和TTable組件以不同的方式與組件以不同的方式與SQL服務器進行服務器進行交互,在執(zhí)行數據定義語句(交互,在執(zhí)行數據定義語句(DDL)時,應當使用)時,應當使用TQuery組件,而組件,而在以非集中方式訪問數據庫時應當使用在以非集中方式訪問數據庫時應當使用TTable組件。組件。(4)TQuery組件訪問的是表格中的特定數據內容;而組件訪問的是表格中的特定數據內容;而TTable組件組件只有提供過濾或限定檢索范圍才能訪問表格中的特定數據,否則只有提供過濾或限定檢索范圍才能訪問表格中的特定數據,否則TTable組件將
28、訪問表格中的全部數據。組件將訪問表格中的全部數據。如前所述,如前所述,TQuery組件隸屬于數據集組件,所有數據集組件具有的組件隸屬于數據集組件,所有數據集組件具有的屬性、方法和事件屬性、方法和事件TQuery組件全部都有。組件全部都有。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組25事事 件件含含 義義Constrained表明Paradox和dBASE表格是否必須在用SELECT語句設定的范圍內執(zhí)行更新和插入操作DataSource指明引入當前字段值得datasource組件Local表明當前訪問的是當地的Paradox或dBASE表格還是遠程服務器上的SQL表格Param
29、Check表明在SQL屬性在運行時發(fā)生改變后,查詢的參數列表ParamCount表明當前查詢參數的總數Params包含了用SQL語句查詢的參數性質Prepared決定是否準備好執(zhí)行一個查詢數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組26事事 件件含含 義義RequestLive表明執(zhí)行查詢時,是否允許BDE及時返回應用程序對數據結果的修改RowsAffected返回上一次執(zhí)行查詢更新或刪除的記錄數SQL設置執(zhí)行查詢時所需的SQL語句SQLBinary用于BDE和TQuery的直接聯系StmtHandle用于調用一些BDE的API函數Text用于指明傳遞給BDE的SQL查詢的實際
30、內容UniDirection1決定在查詢數據結果時,是否允許BDE的記錄指針雙向移動數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組27uDelphi7.0提供了一套采用提供了一套采用ADO的組件。利用這些組件,用戶可以的組件。利用這些組件,用戶可以與與ADO數據庫相聯系,讀取數據庫中的數據并執(zhí)行相應的操作。數據庫相聯系,讀取數據庫中的數據并執(zhí)行相應的操作。u大多數的大多數的ADO連接和數據集組件都是與基于連接和數據集組件都是與基于BDE的連接和數據集組的連接和數據集組件相類似的。件相類似的。TADOConnection組件與基于組件與基于BDE的應用程序的的應用程序的TDatab
31、ase組件相類似。組件相類似。TADOTable與與TTable,TADOQuery與與TQuery以及以及TADOStroedProc和和TStroedProc之間都有這種類似的對應關系。之間都有這種類似的對應關系。u通過通過ADO數據集訪問組件,可以不借助數據集訪問組件,可以不借助BDE引擎而是通過微軟的引擎而是通過微軟的OLE BD來訪問更為廣泛的數據庫中的數據。來訪問更為廣泛的數據庫中的數據。ADO數據集訪問組件數據集訪問組件與常用的數據訪問組件是并列的關系,由于與常用的數據訪問組件是并列的關系,由于ADO數據集訪問組件是數據集訪問組件是從常用數據訪問組件發(fā)展而來,它的許多用法和常用數
32、據訪問組件從常用數據訪問組件發(fā)展而來,它的許多用法和常用數據訪問組件都是相同的都是相同的數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組28 TADOConnection組件被用于建立一個與組件被用于建立一個與ADO數據存儲的連接。為了執(zhí)行命令、獲取數據數據存儲的連接。為了執(zhí)行命令、獲取數據和操作數據,可以把多個和操作數據,可以把多個ADO數據集件和命令組數據集件和命令組件與一個件與一個TADOConnection組件關聯以共享鏈組件關聯以共享鏈接。這個組件與基于接。這個組件與基于BDE的程序中的的程序中的TDataBase組件類似,下面為其重要的屬性。組件類似,下面為其重要的屬性
33、。事事 件件含含 義義ConnectionString指明數據庫連接信息的屬性Connected用來說明一個與數據庫的連接是否被激活ConnectionObject提供對ADO連接對象的直接訪問ConnectionTimeout聲明連接可能需要的最長時間數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組291. ConnectionString 通過設置通過設置ConnectionString來指明將來指明將ADO聯系組件與數據聯系組件與數據集相連的必要信息。集相連的必要信息。ConnectionString的屬性值包含了一個或者的屬性值包含了一個或者多個變元。如果是包含多個變元,那
34、么它們之間要用冒號分開。例如:多個變元。如果是包含多個變元,那么它們之間要用冒號分開。例如:ADOConnection1.ConnectionString:=Provider=SQLOLEDB.1;Integrated Security=SSPI; Persist Security in + fo=false; Initial Catalog=pubs; Data Source=JK在程序設計階段,它可以通過激活對象觀察器中該屬性欄,從允許的在程序設計階段,它可以通過激活對象觀察器中該屬性欄,從允許的ADO數據庫連接中選取。該屬性可以保存為文件后使用,在以后使用數據庫連接中選取。該屬性可以保存
35、為文件后使用,在以后使用時只要在該屬性欄中指明此文件名就可以在此使用該值。該屬性值也時只要在該屬性欄中指明此文件名就可以在此使用該值。該屬性值也可以包含用戶的身份和密碼信息。當采用可以包含用戶的身份和密碼信息。當采用Open方法或通過方法或通過ConnectionString顯式的注冊登錄信息時,最好將顯式的注冊登錄信息時,最好將LoginPrompt的屬性值設為的屬性值設為False,這樣可以避免不必要的注冊對,這樣可以避免不必要的注冊對話框。話框。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組302. Connected 設置設置Connected屬性值為屬性值為True以建
36、立一個與以建立一個與ADO數據庫之間的聯數據庫之間的聯系而不打開一個數據集。將系而不打開一個數據集。將Connected設置為設置為False用來使一個聯系失用來使一個聯系失效。效。Connected的默認屬性是的默認屬性是False。 在應用程序中,可以通過檢查在應用程序中,可以通過檢查Connected屬性值來判斷一個聯系屬性值來判斷一個聯系的當前狀態(tài)。如果的當前狀態(tài)。如果Connected屬性值為屬性值為True,表明當前聯系時處于激,表明當前聯系時處于激活狀態(tài)的。反之,如果活狀態(tài)的。反之,如果Connected屬性值為屬性值為False,而另外一個屬性,而另外一個屬性KeepConne
37、ction的值也為的值也為False的話,表明該聯系處于中斷狀態(tài)。的話,表明該聯系處于中斷狀態(tài)。3. ConnectionObject 提供對提供對ADO聯系對象的直接訪問。通過設置聯系對象的直接訪問。通過設置ConnectionObject屬屬性可以取得參照性可以取得參照ADO聯系對象的直接聯系。通過這種訪問,應用程序聯系對象的直接聯系。通過這種訪問,應用程序可以直接使用與其對應的可以直接使用與其對應的ADO聯系對象的方法和屬性。聯系對象的方法和屬性。 利用利用ConnectionObject屬性對屬性對ADO聯系對象進行直接訪問是建立聯系對象進行直接訪問是建立在對在對ADO對象尤其是對象尤
38、其是ADO組件充分熟悉的基礎上的,所以使用時要謹組件充分熟悉的基礎上的,所以使用時要謹慎。慎。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組314. ConnectionTimeout ConnectionTimeout是用來聲明連接可能需要的最長時間,該屬是用來聲明連接可能需要的最長時間,該屬性是一個整數,它的時間單位是秒,默認的值為性是一個整數,它的時間單位是秒,默認的值為15.如果在如果在ConnectionTimeout表示的時間之前聯系成功或者調用了表示的時間之前聯系成功或者調用了Cancel方法方法的話,的話,ConnectionTimeout屬性沒有任何效用,但是如
39、果一個聯系超屬性沒有任何效用,但是如果一個聯系超過它規(guī)定的時間,它會終止聯系的請求,并產生一個異常。過它規(guī)定的時間,它會終止聯系的請求,并產生一個異常。 當使用當使用TADOConnection組件與組件與ADO數據庫聯系時,首先使用數據庫聯系時,首先使用TADOConnection組件的組件的ConnectionString屬性,屬性,ConnectionString屬性可以包含一系列的參數值,相互之間用冒號隔開,屬性可以包含一系列的參數值,相互之間用冒號隔開,ConnectionString屬性的值可以是包含一系列參數值的文件名。這種屬性的值可以是包含一系列參數值的文件名。這種文件名的內容
40、與格式都與文件名的內容與格式都與ConnectionString屬性值一樣。屬性值一樣。ConnectionString屬性和它的各種參數可以在程序中以字符串類型進屬性和它的各種參數可以在程序中以字符串類型進行設置,但更為常用的方法是在程序設計階段通過激活對象觀察器中該行設置,但更為常用的方法是在程序設計階段通過激活對象觀察器中該屬性的對話框設定(雙擊屬性的對話框設定(雙擊ConnectionString屬性欄或者單擊屬性欄中屬性欄或者單擊屬性欄中的省略號按鈕)。的省略號按鈕)。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組32TADOCommand組件類似于基于組件類似于基于B
41、DE的程序中的的程序中的TQuery的的Excute()方法和方法和TStoredProc的的ExecProc()方法。用來執(zhí)行方法。用來執(zhí)行SQL語句語句但不返回結果。在使用但不返回結果。在使用TADOCommand組件時,首先要確保已經連接組件時,首先要確保已經連接上數據庫,可以通過對象編輯器來編輯。上數據庫,可以通過對象編輯器來編輯。TADOCommand對應的是對應的是ADO中的中的command對象。對象。TADOCommand更通常的是用來執(zhí)行更通常的是用來執(zhí)行DDL SQL命令,或者執(zhí)行一命令,或者執(zhí)行一個不需要返回結果的存儲過程。對于那些不需要返回結果的個不需要返回結果的存儲過
42、程。對于那些不需要返回結果的SQL語句語句,使用,使用TADODataSet組件,組件,TADOQuery或者或者TADOStoredProc組件組件會更好。會更好。TADOCommand組件執(zhí)行的命令是在組件執(zhí)行的命令是在CommandText屬性中說明的屬性中說明的。如果有參數值的話,它們是在。如果有參數值的話,它們是在Parameters屬性中說明的。通過調用屬性中說明的。通過調用Excute方法執(zhí)行命令。方法執(zhí)行命令。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組33 TADOcommand組件可以通過組件可以通過TADOConnection組件與數據庫相組件與數據庫相連
43、,也可以通過在自己的連,也可以通過在自己的ConnectionString屬性中說明連接的信息與屬性中說明連接的信息與數據庫取得聯系。下面是數據庫取得聯系。下面是TADOCommand的一些重要屬性。的一些重要屬性。(1)CommandText CommandText屬性用來說明要使用屬性用來說明要使用ADO操作組件執(zhí)行的命令內操作組件執(zhí)行的命令內容。容。CommandText屬性值是文本形式的命令、如果操作中包含了一些屬性值是文本形式的命令、如果操作中包含了一些參數(像在執(zhí)行參數(像在執(zhí)行SQL語句或者一個存儲過程是的情況),我們可以通語句或者一個存儲過程是的情況),我們可以通過過Param
44、eters屬性值來設定。屬性值來設定。(2)CommandType CommandType屬性用來說明在屬性用來說明在CommandText中說明的操作類中說明的操作類型。型。CommandType屬性值應該與屬性值應該與CommandText中所說明操作相一致中所說明操作相一致。當。當CommandText屬性內容為數據表格名時,屬性內容為數據表格名時,CommandType的屬性的屬性值就應當為值就應當為cmdTable或者是或者是cmdTableDirect。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組34 (3)CommandObject 通過設置通過設置Connect
45、ionObject屬性可以取得與其相對應的屬性可以取得與其相對應的ADO操作操作對象進行直接的聯系。通過這種訪問,應用程序可以使用與其想對應的對象進行直接的聯系。通過這種訪問,應用程序可以使用與其想對應的ADO操作對象的方法操作對象的方法 和屬性。在沒有與之對應的和屬性。在沒有與之對應的ADO操作對象,而使操作對象,而使用用TADOCommand組件與數據庫相連時,這個屬性顯得尤為重要。組件與數據庫相連時,這個屬性顯得尤為重要。 TADOCommand組件是用來執(zhí)行對數據庫的操作的。組件是用來執(zhí)行對數據庫的操作的。首先,在首先,在CommandText屬性中說明使用屬性中說明使用ADO操作組件
46、執(zhí)行操作的內操作組件執(zhí)行操作的內容。在程序設計階段,在對象觀察器中通過容。在程序設計階段,在對象觀察器中通過CommandText屬性欄中輸屬性欄中輸入命令(一條入命令(一條SQL語句,一個數據表或者一個過程名)。在運行階段語句,一個數據表或者一個過程名)。在運行階段,可以將,可以將CommandText屬性值作為字符串類型數據設定。如果有需要屬性值作為字符串類型數據設定。如果有需要的話,可以在的話,可以在CommandType屬性中顯式的定義執(zhí)行操作的類型。屬性中顯式的定義執(zhí)行操作的類型。CommandType屬性包含的選項有:屬性包含的選項有:(1)cmdText(當執(zhí)行的為一條(當執(zhí)行的
47、為一條SQL語句時)。語句時)。(2)cmdTable(當執(zhí)行操作為一個數據表格時)。(當執(zhí)行操作為一個數據表格時)。(3)cmdStoredProc(當執(zhí)行操作問為一個存儲過程時)。(當執(zhí)行操作問為一個存儲過程時)。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組35TADODataSet組件是用于獲取和操作組件是用于獲取和操作ADO數據的主要組件。該組件數據的主要組件。該組件可以操縱數據表、執(zhí)行可以操縱數據表、執(zhí)行SQL查詢和存儲過程并且能通過查詢和存儲過程并且能通過TADOConnection組件直接與一個數據存儲建立連接。組件直接與一個數據存儲建立連接。TADODataSe
48、t是最常用的是最常用的ADO數據集組件。數據集組件。TADODataSet可以從可以從ADO數據庫內讀取一張或者多張數據表。這種讀取可以是直接讀取數數據庫內讀取一張或者多張數據表。這種讀取可以是直接讀取數據表格,也可以通過據表格,也可以通過SQL語句訪問。在使用語句訪問。在使用TADODataSet訪問數據之訪問數據之前需要建立它與數據庫之間的聯系。前需要建立它與數據庫之間的聯系。TADOQuery組件通過一個合法的組件通過一個合法的SQL語句或執(zhí)行語句或執(zhí)行DDL(Data Definition Language),例如),例如“Create Table”SQL語句來獲取和操作語句來獲取和操
49、作數據集的元素,該組件可以直接連接到數據設備上或通過數據集的元素,該組件可以直接連接到數據設備上或通過TADOConnection組件連接到數據庫設備上。組件連接到數據庫設備上。通過通過TADOQuery組件的組件的SQL屬性可以設計各種屬性可以設計各種SQL語句,在該屬性語句,在該屬性中不僅可以使用數據查詢語句,還可以使用各種標準的數據結構話語句中不僅可以使用數據查詢語句,還可以使用各種標準的數據結構話語句,如:,如:DELETE、INSERT和和UPDATE等。等。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組36 數據庫應用系統開發(fā)通常要針對一個特定的數據庫應用系統開發(fā)通常
50、要針對一個特定的環(huán)境與目標,把與之相關的數據以某種數據模型進環(huán)境與目標,把與之相關的數據以某種數據模型進行存儲,然后,按照一些特定的規(guī)則對這些數據進行存儲,然后,按照一些特定的規(guī)則對這些數據進行分析、整理,以實現數據的存儲、組織及處理。行分析、整理,以實現數據的存儲、組織及處理。 本節(jié)以學生信息管理系統的開發(fā)為案例,以本節(jié)以學生信息管理系統的開發(fā)為案例,以Delphi7.0為開發(fā)工具,介紹為開發(fā)工具,介紹SQL Server數據數據庫應用程序的實現過程與方法。庫應用程序的實現過程與方法。 學生信息管理系統是一個非常通用的信息管學生信息管理系統是一個非常通用的信息管理系統,很多大、中、小學校都需
51、要自己的學生管理系統,很多大、中、小學校都需要自己的學生管理系統,以便對本校學生的基本信息和學習情況進理系統,以便對本校學生的基本信息和學習情況進行管理。要進行系統軟件的開發(fā),首先必須在行管理。要進行系統軟件的開發(fā),首先必須在SQL的企業(yè)管理器建立數據庫。打開的企業(yè)管理器建立數據庫。打開“企業(yè)管理企業(yè)管理器器”,然后再數據庫右鍵后,點擊建立數據庫,既,然后再數據庫右鍵后,點擊建立數據庫,既可以建立一個自己的數據庫了,如圖所示??梢越⒁粋€自己的數據庫了,如圖所示。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組37 根據事先設計好的數據字典進行數據表的創(chuàng)根據事先設計好的數據字典進行
52、數據表的創(chuàng)建,例如學生表的數據字典如下表所示:建,例如學生表的數據字典如下表所示:字段名字段名代代 碼碼類類 型型約約 束束學號s_nochar(6)主鍵姓名s_namechar(10)非空性別s_sexchar(2)只取男、女出生日期s_birthdaydata入學成績s_scorenumber(5,1)附加分s_addfnumber(3,1)班級編碼class_nochar(5)與班級表中class_no外鍵關聯數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組38 在數據庫的表的選項中新建表,按照上述數據字典在數據庫的表的選項中新建表,按照上述數據字典進行表格屬性的輸入,例如主
53、鍵的設定,參照性約束設進行表格屬性的輸入,例如主鍵的設定,參照性約束設定以及是否級聯等。重復上述步驟,直至把相關數據表定以及是否級聯等。重復上述步驟,直至把相關數據表輸入數據庫為止。輸入數據庫為止。 在數據庫中建立表格之后,接下來在在數據庫中建立表格之后,接下來在Delphi中進中進行前臺界面的開發(fā)。行前臺界面的開發(fā)。(1)新建工程和窗口,如圖)新建工程和窗口,如圖11.4所示:所示:數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組39(2)制作無數據庫導入的基本界面,這一步是數據導)制作無數據庫導入的基本界面,這一步是數據導入的鋪墊,首先是把框架打和空間選擇好然后導入數據入的鋪墊
54、,首先是把框架打和空間選擇好然后導入數據庫就行了。例如控件庫就行了。例如控件DBGrid,見圖,見圖11.5 DBGrid控控件:件:數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組40(3)在)在Form中對相關的控件的屬性進行設置,如中對相關的控件的屬性進行設置,如DBGrid、DBEdit、Button、Label等等空間的屬性進行設置,例如其數據源的屬性,數據等等空間的屬性進行設置,例如其數據源的屬性,數據范圍等等相關屬性的操作。范圍等等相關屬性的操作。(4)進行數據庫的導入,基于)進行數據庫的導入,基于ADO快捷而方便的特點,本文使用的數快捷而方便的特點,本文使用的數據源均用據源均用ADO導入和鏈接,使用的主要控件是導入和鏈接,使用的主要控件是ADOConnection,ADOTable,ADOQuery。 數據庫的導入首先要建立數據源:數據庫的導入首先要建立數據源:(5)導入以后,在)導入以后,在DateSourse里的里的DateSet里選擇要導入的數據,然里選擇要導入的數據,然后就可以讓控件來選擇數據源,從而完成對數據的導入。后就可以讓控件來選擇數據源,從而完成對數據的導入。數據庫技術與應用基礎教材編寫組數據庫技術與應用基礎教材編寫組4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年冷凍飲品項目經營分析報告
- 藥盒行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 2025年度酒水產品定制化禮品包裝購銷合同
- 2025年家具行業(yè)市場調研與分析合同-@-1
- 中國桂魚產品流通行業(yè)市場運營現狀及投資研究建議報告
- 2025年度農業(yè)大數據分析軟件產品銷售與服務合同
- 主管護師申請書
- 2025年中國煤氣體火頭行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2024-2030年中國睡衣衫褲行業(yè)市場全景監(jiān)測及投資策略研究報告
- 2025年度房屋抵押貸款服務合同范本(房產)
- 部編小學語文(6年級下冊第6單元)作業(yè)設計
- 餐飲服務與管理(高職)PPT完整全套教學課件
- 成人學士學位英語1000個高頻必考詞匯匯總
- 2023年菏澤醫(yī)學??茖W校單招綜合素質模擬試題及答案解析
- 常見食物的嘌呤含量表匯總
- 人教版數學八年級下冊同步練習(含答案)
- SB/T 10752-2012馬鈴薯雪花全粉
- 2023年湖南高速鐵路職業(yè)技術學院高職單招(英語)試題庫含答案解析
- 濕型砂中煤粉作用及檢測全解析
- 積累運用表示動作的詞語課件
- 機動車登記證書英文證書模板
評論
0/150
提交評論