Delphi程序的設(shè)計基礎(chǔ)教程第10章 數(shù)據(jù)庫編程基礎(chǔ)_第1頁
Delphi程序的設(shè)計基礎(chǔ)教程第10章 數(shù)據(jù)庫編程基礎(chǔ)_第2頁
Delphi程序的設(shè)計基礎(chǔ)教程第10章 數(shù)據(jù)庫編程基礎(chǔ)_第3頁
Delphi程序的設(shè)計基礎(chǔ)教程第10章 數(shù)據(jù)庫編程基礎(chǔ)_第4頁
Delphi程序的設(shè)計基礎(chǔ)教程第10章 數(shù)據(jù)庫編程基礎(chǔ)_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

DELPHI程序設(shè)計基礎(chǔ)教程 第十章數(shù)據(jù)庫編程基礎(chǔ).第十章數(shù)據(jù)庫編程基礎(chǔ)本章學習導讀10.1Delphi數(shù)據(jù)庫編程基礎(chǔ)10.2數(shù)據(jù)源組件DataSource10.3數(shù)據(jù)集組件DataSet10.4BDE數(shù)據(jù)集組件10.5ADO組件10.6數(shù)據(jù)控制組件本章小結(jié)2023/2/3.本章學習導讀Delphi最強大的地方就在于對數(shù)據(jù)庫的支持,Delphi可以訪問多種數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)庫,可以訪問諸如Paradox、dBase、本地InterBase服務(wù)器的數(shù)據(jù)庫,也可以訪問如Oracle、Sybase等遠程數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù)庫,或任何經(jīng)ODBC可訪問的數(shù)據(jù)庫管理系統(tǒng)中的數(shù)據(jù)庫。本章首先對Delphi數(shù)據(jù)庫的編程基礎(chǔ)做簡單介紹,然后通過向?qū)嶋H的建立一個數(shù)據(jù)庫應(yīng)用程序,接著詳細介紹常用的數(shù)據(jù)組件的使用方法,最后介紹了通過ODBC訪問數(shù)據(jù)庫的方法。2023/2/3.10.1Delphi數(shù)據(jù)庫編程基礎(chǔ)數(shù)據(jù)庫應(yīng)用程序的構(gòu)成一個數(shù)據(jù)庫應(yīng)用程序通常由兩部分組成:數(shù)據(jù)庫訪問鏈路和用戶界面。Delphi采用開放式數(shù)據(jù)庫體系結(jié)構(gòu),允許用戶采用任何可獲得的數(shù)據(jù)庫引擎來創(chuàng)建數(shù)據(jù)庫程序。Delphi使用可視化組件創(chuàng)建數(shù)據(jù)庫應(yīng)用程序,和創(chuàng)建其他應(yīng)用程序一樣,數(shù)據(jù)庫組件同樣具有一定的屬性,程序員可以在設(shè)計過程中設(shè)置組件的各種屬性,也可以在程序運行過程中通過代碼來改變數(shù)據(jù)庫組件的各種屬性。2023/2/3.10.1Delphi數(shù)據(jù)庫編程基礎(chǔ)數(shù)據(jù)庫引擎BDE、ADO簡介1.BDE數(shù)據(jù)庫引擎BDE數(shù)據(jù)庫引擎〔BorlandDatabaseEngine〕是Borland公司推出的一種特有的用于訪問數(shù)據(jù)庫的機制,它可以讓多個程序共享,為應(yīng)用程序與數(shù)據(jù)庫的連接提供了靈活性和通用性。BDE中封裝了各種數(shù)據(jù)庫驅(qū)動程序,可以訪問本地數(shù)據(jù)庫Paradox、dBase、FoxPro和Access,通過SQLLinks驅(qū)動程序又可以訪問遠程數(shù)據(jù)庫如InterBase、Oracle、SqlServer和DB2。BDE支持的面很廣,因為它可以連接到ODBC,而ODBC本身就可以支持很多數(shù)據(jù)庫,所以凡是ODBC可以連接的數(shù)據(jù)庫,BDE都可以連接。BDE的基本構(gòu)思是把應(yīng)用程序與具體的數(shù)據(jù)庫隔離開,提供一個統(tǒng)一的結(jié)構(gòu)供用戶使用,應(yīng)用程序不再直接與具體的數(shù)據(jù)庫打交道,而是向BDE提出操作數(shù)據(jù)庫的申請,由BDE具體操作數(shù)據(jù)庫,并把結(jié)果返回給應(yīng)用程序。2023/2/3.10.1Delphi數(shù)據(jù)庫編程基礎(chǔ)2.ADO數(shù)據(jù)庫引擎ADO數(shù)據(jù)庫引擎〔ActiveXDataObject〕是微軟推出的一套數(shù)據(jù)庫訪問規(guī)范。它使應(yīng)用程序能夠通過一種叫做OLEDB提供者〔OLEDBProvider〕的驅(qū)動程序訪問和操作數(shù)據(jù)庫,OLEDB是微軟定制的通向不同的數(shù)據(jù)源的低級應(yīng)用程序接口,OLEDB不僅包括微軟的標準數(shù)據(jù)接口開放數(shù)據(jù)庫連通性〔ODBC〕的結(jié)構(gòu)化問題語言能力,還具有面向其他非SQL數(shù)據(jù)類型的通路。OLEDB也是一個基于COM的數(shù)據(jù)訪問規(guī)則和API函數(shù)的集合,并經(jīng)過了簡化。實際上,ADO以ActiveX組件的形式封裝了OLEDB,以提供一個更友好方便的使用方式。2023/2/3.10.2數(shù)據(jù)源組件DataSource數(shù)據(jù)源組件的屬性數(shù)據(jù)源〔DataSource〕組件是連接數(shù)據(jù)集組件〔如Table、Query、StoredProc〕與數(shù)據(jù)控制組件的橋梁,數(shù)據(jù)控制組件的DataSource屬性指定數(shù)據(jù)源,而數(shù)據(jù)源的DataSet屬性指定數(shù)據(jù)集。使用DataSource組件,必須設(shè)置它的DataSet屬性,這是用來指明一個與當前數(shù)據(jù)源組件相聯(lián)系的已知數(shù)據(jù)集組件的名字,其它屬性可以根據(jù)需要設(shè)定。數(shù)據(jù)源組件位于工具欄的DataAccess選項卡。(1〕DataSetDataSet屬性是用來指明一個與當前數(shù)據(jù)源組件相聯(lián)系的已存在的數(shù)據(jù)集組件的名字??梢栽谠O(shè)計階段通過對象檢視器來設(shè)置DataSet屬性,也可以在運行時通過代碼修改該屬性值。應(yīng)用程序通過改變DataSet屬性可以實現(xiàn)在同一個數(shù)據(jù)控制組件中顯示和編輯不同數(shù)據(jù)集組件中的數(shù)據(jù)。(2〕EnabledEnabled屬性決定了與此數(shù)據(jù)源組件相連的數(shù)據(jù)控制組件是否顯示數(shù)據(jù),如果Enabled屬性值為默認值True,數(shù)據(jù)控制組件將顯示數(shù)據(jù),如果Enabled屬性值為False,則所有與此數(shù)據(jù)源組件相連的數(shù)據(jù)控制組件都將不顯示任何數(shù)據(jù)。(3〕StateState屬性是用來讀取與此數(shù)據(jù)源組件相連的數(shù)據(jù)集組件的當前狀態(tài)。數(shù)據(jù)集組件的當前狀態(tài)表明了能對數(shù)據(jù)集所做的操作。2023/2/3.10.2數(shù)據(jù)源組件DataSource數(shù)據(jù)源的方法DataSource組件的方法使用的比較少,只需了解即可(1〕Create調(diào)用Create方法會創(chuàng)建一個DataSource組件(2〕EditEdit方法可使與數(shù)據(jù)源聯(lián)系的數(shù)據(jù)集進入編輯狀態(tài),可以通過修改數(shù)據(jù)源的AutoEdit屬性來實現(xiàn)該功能。2023/2/3.10.2數(shù)據(jù)源組件DataSource數(shù)據(jù)源的常用事件(1〕OnDataChange當與該數(shù)據(jù)源組件相連的數(shù)據(jù)集的當前記錄被編輯后,應(yīng)用程序轉(zhuǎn)移到其它字段或者轉(zhuǎn)移到其它記錄時觸發(fā)該事件。由于該事件可被所有變化觸發(fā),所以能確保數(shù)據(jù)控制組件反映當前數(shù)據(jù)集中的字段值。(2〕OnStateChange當與數(shù)據(jù)源連接的數(shù)據(jù)集狀態(tài)發(fā)生改變時會觸發(fā)該事件。(3〕OnUpdateData當前的記錄被更新時觸發(fā)該事件,該事件在數(shù)據(jù)集的Post方法之前被調(diào)用,一般用于在數(shù)據(jù)提交前進行附加的處理和確認操作。2023/2/3.10.3數(shù)據(jù)集組件DataSet數(shù)據(jù)集的打開與關(guān)閉在Delphi中,訪問數(shù)據(jù)的基本單元是數(shù)據(jù)集對象,應(yīng)用程序也是通過數(shù)據(jù)集組件來訪問數(shù)據(jù)庫。一個數(shù)據(jù)集對象就代表了數(shù)據(jù)庫的一張表格,或者是訪問數(shù)據(jù)庫的一個查詢或存儲過程。數(shù)據(jù)集組件DataSet是一個抽象類,定義了一些關(guān)于數(shù)據(jù)集的基本屬性、方法和事件。在應(yīng)用程序中實際使用的是它的子類Table、Query、StoredProc、ADOTable、ADOStoredProc等組件。Table、Query和StoredProc組件位于工具欄的BDE選項卡。Active屬性用來說明數(shù)據(jù)庫文件的打開狀態(tài)。應(yīng)用Active屬性來決定及設(shè)定一個數(shù)據(jù)集組件與數(shù)據(jù)庫數(shù)據(jù)之間的關(guān)系。當Active屬性值為True時,表明數(shù)據(jù)集是打開的,數(shù)據(jù)集組件可以對數(shù)據(jù)庫進行讀寫操作,否則表示數(shù)據(jù)集是關(guān)閉的,數(shù)據(jù)集組件不能從數(shù)據(jù)庫讀取數(shù)據(jù),也不能向數(shù)據(jù)庫中寫數(shù)據(jù)。應(yīng)用程序在改變其它影響數(shù)據(jù)庫狀態(tài)或在應(yīng)用程序中顯示數(shù)據(jù)的組件狀態(tài)的屬性之前,必須先將Active屬性設(shè)置為False。2023/2/3.10.2數(shù)據(jù)源組件DataSource對數(shù)據(jù)集的數(shù)據(jù)讀、寫都必須先打開數(shù)據(jù)集,打開數(shù)據(jù)集有兩種方法:(1〕將Active屬性值設(shè)置為True;(2〕調(diào)用數(shù)據(jù)集的Open方法。關(guān)閉數(shù)據(jù)集同樣有兩種方法:(1〕將Active屬性值設(shè)置為False;(2〕調(diào)用數(shù)據(jù)集的Close方法。2023/2/3.10.3數(shù)據(jù)集組件DataSet數(shù)據(jù)集狀態(tài)State屬性是用來讀取與此數(shù)據(jù)源組件相連的數(shù)據(jù)集組件的當前狀態(tài)。數(shù)據(jù)集組件的當前狀態(tài)表明了能對數(shù)據(jù)集所做的操作。當Enabled屬性值為False或者沒有指定DataSet屬性的情況下,無論數(shù)據(jù)集組件的實際狀態(tài)如何,State屬性總是為dsInactive。其它情況下State屬性值與數(shù)據(jù)集的當前狀態(tài)一致。2023/2/3.10.3數(shù)據(jù)集組件DataSet數(shù)據(jù)集的瀏覽(1〕BOF和EOF屬性BOF〔BeginningofFile〕屬性值為一個布爾值,表明當前記錄指針所處的位置是否為記錄集的第一個記錄。如果BOF為True,表明當前記錄指針所處的位置確實是數(shù)據(jù)集的第一個記錄。EOF〔EndofFile〕屬性值為一個布爾值,表明當前記錄指針所處的位置是否為記錄集的最后一個記錄。如果EOF為True,表明當前記錄指針所處的位置確實是數(shù)據(jù)集的最后一個記錄。(2〕First方法在DataSet的派生類中,調(diào)用First方法將記錄指針移至數(shù)據(jù)集的第一條記錄處,并使之成為當前記錄。同時將BOF屬性值設(shè)置為True。(3〕Last方法Last方法與First方法非常相似,只不過Last方法是將記錄指針移至數(shù)據(jù)集的最后一條記錄處,并使之成為當前記錄。它將EOF屬性值設(shè)置為True。2023/2/3.10.3數(shù)據(jù)集組件DataSet(4〕MoveBy方法MoveBy函數(shù)的基本格式如下:functionMoveBy〔Distance:Integer):Integer;調(diào)用MoveBy方法是將記錄指針指向數(shù)據(jù)集中與當前記錄相關(guān)的一條記錄處,Distance是指需要移動的記錄數(shù)目。距離是正值表明在數(shù)據(jù)集中朝前移動,負值表明是朝后移動。(5〕Next方法調(diào)用Next方法將記錄指針置于數(shù)據(jù)集中的下一條記錄,并使之成為當前記錄。如果記錄指針已處于數(shù)據(jù)集的最后一條記錄,就將EOF屬性值設(shè)置為True。(6〕Prior方法Prior方法與Next方法非常相似,Prior方法將記錄指針置于數(shù)據(jù)集中的上一條記錄,并使之成為當前記錄;如果記錄指針已處于數(shù)據(jù)集的第一條記錄,就將BOF屬性值設(shè)置為True。2023/2/3.10.3數(shù)據(jù)集組件DataSet對數(shù)據(jù)集進行的操作(1〕Append調(diào)用Append方法不僅可以在數(shù)據(jù)集的末尾建立一個新的空記錄,還可以將新的記錄設(shè)置為當前記錄。在調(diào)用Append方法后,應(yīng)用程序允許用戶向記錄的字段中輸入數(shù)據(jù),并且能夠通過調(diào)用Post方法將這些更改提交給數(shù)據(jù)庫。(2〕Cancel調(diào)用Cancel方法可以用來取消對當前記錄中一個或多個字段的修改。在這些更改還未提交給數(shù)據(jù)庫時,Cancel方法使記錄恢復到修改前的狀態(tài),并將數(shù)據(jù)集置于dsBrowse狀態(tài)。(3〕Delete調(diào)用Delete方法用來將當前記錄從數(shù)據(jù)庫中刪除。如果該數(shù)據(jù)集處于激活狀態(tài),Delete方法將產(chǎn)生一個異常事件。(4〕Edit調(diào)用Edit方法用來編輯數(shù)據(jù)集中的當前記錄。(5〕Insert調(diào)用Insert方法不僅可以在數(shù)據(jù)集中打開一個新的空記錄,還可以將新的記錄設(shè)置為當前記錄。在調(diào)用Insert方法后,應(yīng)用程序允許用戶向記錄的字段中輸入數(shù)據(jù),并且能夠通過調(diào)用Post方法將這些更改提交給數(shù)據(jù)庫。(6〕Post調(diào)用Post方法用來向數(shù)據(jù)庫提交一個修改的記錄。數(shù)據(jù)集中編輯修改數(shù)據(jù)庫數(shù)據(jù)的方法如Edit、Insert或Append,以及瀏覽數(shù)據(jù)庫中數(shù)據(jù)的方法如First、Last、Next和Prior都會自動的調(diào)用Post方法。2023/2/3.10.3數(shù)據(jù)集組件DataSet數(shù)據(jù)集的字段字段組件代表了數(shù)據(jù)集中各個獨立的字段,Delphi中定義了字段類Field及其相關(guān)的屬性和方法,并提供了Field的派生對象。字段組件是非可視組件。一般來說,一個簡單的字段組件用來表示數(shù)據(jù)表中的字段特征,如數(shù)據(jù)類型和字段大小。它也用于表示字段的顯示特征如排列對齊方式、顯示格式和編輯格式等。當在數(shù)據(jù)集的記錄之間滾動時,字段組件將更新當前字段的值,并可以被調(diào)用相應(yīng)的屬性和方法來顯示給用戶。1.常用屬性(1〕FieldName屬性FieldName屬性用于指定字段對象和數(shù)據(jù)庫中的哪個實際字段相對應(yīng),該屬性值表示字段的實際名字。(2〕ReadOnly屬性ReadOnly屬性用來設(shè)置字段是否為只讀,當屬性值為True時字段只能讀取不能修改;當ReadOnly屬性值為False時,該字段可被讀寫。(3〕Caculated屬性Caculated屬性用于說明字段是否為計算字段,默認值為False。當屬性值為True時表示該字段為計算字段,字段值需要通過計算得到。2023/2/3.10.3數(shù)據(jù)集組件DataSet2.字段的訪問方式有兩種方式可以訪問當前記錄的字段值:(1〕使用屬性Fields[i]訪問當前記錄,F(xiàn)ields[i]是按照字段的順序來訪問的。每一個字段對象對應(yīng)于數(shù)據(jù)庫表中的一個字段,數(shù)據(jù)集的所有字段對象存在于屬性Fields列表中,F(xiàn)ields列表中的字段對象就像數(shù)組元素一樣擁有自己的索引號,可以用這個索引號來訪問字段對象,索引號從0開始〔表示表中最左邊一列),依次遞增。代碼Query1.Fields[0].DisplayLabel:=’第一列’;訪問與Query1相連的數(shù)據(jù)庫表中的第一個字段,并為該字段設(shè)置標題“第一列”。(2〕使用方法FieldByName按照字段的名字來訪問,如顯示studentinfo表中Name屬性值只需要使用代碼Edit1.text:=Table1.FieldByName(‘Name’).AsString;即可2023/2/3.10.4BDE數(shù)據(jù)集組件Table組件Table組件和Query組件繼承自數(shù)據(jù)集組件,位于工具欄的BDE選項卡,使用Table組件,主要是用來連接數(shù)據(jù)庫的。它即可以在設(shè)計階段通過對象檢視器設(shè)定其屬性值實現(xiàn)與數(shù)據(jù)庫的連接,也可以在程序運行過程時通過代碼動態(tài)指定連接的數(shù)據(jù)庫。設(shè)定Table組件,首先要設(shè)置它的DatabaseName屬性,即說明當前數(shù)據(jù)集的來源。通常該屬性設(shè)置為BDE中的數(shù)據(jù)庫別名,然后設(shè)置TableName屬性,它是用來說明Table組件所對應(yīng)的是數(shù)據(jù)庫中的哪一張表格。這兩個屬性是Table組件中最基本、最重要的屬性。如果要實現(xiàn)與數(shù)據(jù)庫的高級連接,如對記錄進行過濾等還要用到其它的屬性和方法。2023/2/3.10.4BDE數(shù)據(jù)集組件Query組件Query是一個封裝了SQL語句,專門用于對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢的組件。Query組件可以一次訪問數(shù)據(jù)庫中的一個或多個表格,而Table組件一次只能訪問一個表。Query組件訪問的表格可以是在遠程服務(wù)器的數(shù)據(jù)庫中,也可以是當?shù)氐谋砀?。Query組件和Table組件同屬于數(shù)據(jù)集組件,繼承了數(shù)據(jù)集組件的屬性、方法和事件。其最大的不同在于Query支持SQL,可以利用SQL的靈活性,因此它比Table更適合于高效的處理數(shù)據(jù)庫的資源。Query和Table組件都是通過BDE數(shù)據(jù)庫引擎來訪問數(shù)據(jù)的,如果要訪問SQL數(shù)據(jù)庫,BDE會把Table命令轉(zhuǎn)換為SQL語句,而Query相對簡單,只要把整理過的SQL屬性值傳給數(shù)據(jù)庫就可以了。2023/2/3.10.4BDE數(shù)據(jù)集組件Database組件數(shù)據(jù)庫組件〔Database〕屬于BDE組件,適用于以BDE方式與數(shù)據(jù)庫進行連接。在數(shù)據(jù)庫開發(fā)過程中,代表了應(yīng)用程序所要訪問的數(shù)據(jù)庫,它的主要用途是控制數(shù)據(jù)庫事務(wù)和進行緩存更新。如果在設(shè)計應(yīng)用程序時沒有手工加入一個數(shù)據(jù)庫組件〔大部分情況都如此),程序會根據(jù)數(shù)據(jù)集組件的DatabaseName屬性自動創(chuàng)建一個臨時數(shù)據(jù)庫組件,當應(yīng)用程序和數(shù)據(jù)庫斷開連接后〔比如程序運行結(jié)束),這個臨時的數(shù)據(jù)庫組件自動被清除。反之,如果在設(shè)計初期手工加入一個數(shù)據(jù)庫組件,則這個組件的DatabaseName屬性指定程序要訪問的數(shù)據(jù)庫,手工加入的數(shù)據(jù)庫組件是永久組件,即使程序運行結(jié)束也不會被清除。2023/2/3.10.4BDE數(shù)據(jù)集組件其他BDE組件1.StoredProc組件StoredProc組件與Query組件、Table組件一樣,屬于數(shù)據(jù)集組件。StoredProc組件是用來完成數(shù)據(jù)庫服務(wù)器上的存儲過程的。當一個應(yīng)用程序必須在一個遠程服務(wù)器的數(shù)據(jù)庫中進行存儲操作時,就會用到StoredProc組件。一個存儲過程是一系列存儲在服務(wù)器上的經(jīng)過優(yōu)化的SQL語句。存儲過程執(zhí)行與數(shù)據(jù)庫相關(guān)的重復性任務(wù)并將結(jié)果傳遞給用戶。值得注意的是并不是所有的數(shù)據(jù)庫服務(wù)器都支持存儲過程。使用存儲過程可以提高數(shù)據(jù)庫應(yīng)用程序的效率,具體體現(xiàn)在:(1〕充分利用服務(wù)器的處理能力和處理速度;(2〕因為處理過程在服務(wù)器上進行,減少了網(wǎng)絡(luò)傳輸?shù)墓ぷ髁?;?〕存儲在服務(wù)器上的存儲過程是經(jīng)過優(yōu)化的,執(zhí)行起來更快。2023/2/3.10.4BDE數(shù)據(jù)集組件2.數(shù)據(jù)庫連接〔Session〕組件數(shù)據(jù)庫連接〔Session〕組件主要用于在多線程的數(shù)據(jù)庫應(yīng)用程序中管理數(shù)據(jù)庫的連接,Session組件通常很少用,只有在對數(shù)據(jù)庫進行高級操作時才用到,其作用主要體現(xiàn)在以下幾個方面:(1〕管理BDE別名??梢杂脮捚趯ο髣?chuàng)建、刪除、修改數(shù)據(jù)庫的BDE別名;(2〕在兩層的數(shù)據(jù)庫應(yīng)用程序中控制數(shù)據(jù)庫的連接;(3〕在單層的數(shù)據(jù)庫應(yīng)用程序中對Paradox和dBase提供口令保護。即可以顯示對話框讓用戶輸入口令也可以在程序中提供口令〔4〕指定BDE網(wǎng)絡(luò)控制文件PDOXUSERS.NET和存放私有文件的目錄。Session組件不能被顯式的創(chuàng)建,也無法觀察到它。Delphi自動的為數(shù)據(jù)庫應(yīng)用程序創(chuàng)建一個默認的Session組件,在應(yīng)用程序運行時通過使用它的屬性、方法和事件來控制這個默認的Session組件。2023/2/3.10.5ADO組件ADOConnection組件ADOConnection組件是用來建立、維持一個與ADO數(shù)據(jù)源之間連接。用戶在訪問ADO數(shù)據(jù)源中的數(shù)據(jù)前,首先要建立與ADO數(shù)據(jù)源建立連接。雖然可以使用ADOTable或者ADOQuery組件與ADO數(shù)據(jù)源建立連接,但是這種連接只是為一個特定組件服務(wù)的。這時可以使用ADOConnection組件關(guān)聯(lián)以共享連接。ADOConnection組件相對于這些組件來說相當于一個數(shù)據(jù)庫別名,如果后臺數(shù)據(jù)庫發(fā)生變化,只需改變ADOConnection組件的屬性就可以了。2023/2/3.10.5ADO組件ADODataSet組件ADODataSet組件是最常用的ADO數(shù)據(jù)集組件之一,它具有從一個或多個ADO數(shù)據(jù)表中找到結(jié)果數(shù)據(jù)集的功能。1.ADODataSet組件的常見屬性(1〕ConnectionString屬性ConnectionString屬性用于設(shè)置建立連接的字符串,其設(shè)置方法和ADOConnection組件完全一致,請參見10.5.1節(jié)。如果不設(shè)置ConnectionString屬性,可以設(shè)置Connection屬性關(guān)聯(lián)ADOConnection組件。(2〕CommandText屬性CommandText屬性用于指定ADODataSet組件的數(shù)據(jù)集,可以指定一個數(shù)據(jù)表格或者SelectSQL語句。這里只能為Select語句,ADODataSet組件不能使用數(shù)據(jù)操縱語言〔如Insert、Update、Delete),因為數(shù)據(jù)操縱語言不返回數(shù)據(jù)結(jié)果。如果要使用數(shù)據(jù)操縱語言可以使用ADOQuery組件。2023/2/3.10.5ADO組件ADOTable、ADOQuery和ADOStoredProc組件在Delphi的ADO組件中,除了提供數(shù)據(jù)集組件ADODataSet外,還提供了ADOTable組件、ADOQuery組件和ADOStoredProc組件,這四個組件的功能幾乎是一樣的,都通過ADO的RecordSet對象來執(zhí)行內(nèi)部的工作。封裝ADOTable組件、ADOQuery組件和ADOStoredProc組件的主要目的是讓原來熟悉BDE的開發(fā)人員能夠快速的使用ADO組件。不同點主要在于:(1〕ADOTable、ADOQuery和ADOStoredProc組件通過ADO與數(shù)據(jù)庫相連,而Table、Query和StoredProc組件通過BDE連接數(shù)據(jù)庫;(2〕ADOTable、ADOQuery和ADOStoredProc組件除了具有與Table、Query和StoredProc組件相同的、用于訪問數(shù)據(jù)庫數(shù)據(jù)的屬性和方法外,還有用于建立組件與ADO數(shù)據(jù)庫之間連接的屬性和方法,如Connection、ConnectionString、CommandText、ConnectionType等。2023/2/3.10.6數(shù)據(jù)控制組件DBGrid組件在前面的講解中一直在使用DBGrid組件,DBGrid組件以表格形式顯示數(shù)據(jù)集中的數(shù)據(jù),并像一般電子表格一樣,允許用戶操作表格中的數(shù)據(jù),對其進行編輯。在窗體中放置一個DBGrid組件來顯示和編輯一個數(shù)據(jù)集中的記錄,應(yīng)用程序可以通過該組件來插入、修改和刪除數(shù)據(jù)集中的數(shù)據(jù),或者將ReadOnly設(shè)置為True,僅僅供用戶瀏覽。2023/2/3.10.6數(shù)據(jù)控制組件DBNavigator組件DBNavigator組件是用來在數(shù)據(jù)集中瀏覽和編輯數(shù)據(jù)的,它由一組控制按鈕組成。使用該按鈕可以向前或向后移動記錄指針,可以使用該組件對單條記錄進行編輯,還可以用它來插入、刪除記錄以及取消操作。DBNavigator組件一般與其它數(shù)據(jù)控制組件一起使用。當用戶使用DBNavigator組件中的按鈕時,與此DBNavigator組件相連的數(shù)據(jù)集會發(fā)生相應(yīng)的變化。例如當用戶選擇了其中的Insert按鈕,數(shù)據(jù)集中將被插入一條空的新記錄。而當用戶選擇了移動記錄的按鈕,相當于調(diào)用了數(shù)據(jù)集中First、Prior、Next、Last方法,數(shù)據(jù)集中的記錄指針也會隨著發(fā)生移動。2023/2/3.10.6數(shù)據(jù)控制組件其他DataControl組件1.DBText組件DBText組件是用來顯示數(shù)據(jù)集里當前記錄中一個特定字段的值的數(shù)據(jù)控制組

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論