基于ADO的復雜數(shù)據(jù)庫編程的應用
0 引言
ADO(ActiveX Data Objects)是微軟提供對各種數(shù)據(jù)格式的高層接口(highlevelinterface),該接口已經成為訪問數(shù)據(jù)庫的新的標準。使用這種接口的數(shù)據(jù)庫又稱為OLE DB數(shù)據(jù)庫。由于網絡數(shù)據(jù)庫的廣泛應用,ADO現(xiàn)在越來越成為數(shù)據(jù)庫編程人員眼中的寵兒,ADO在復雜數(shù)據(jù)庫編程方面的功能非常強大。OLE DB數(shù)據(jù)庫可以使我們方便地訪問各種類型的數(shù)據(jù)庫,包括關系型或非關系型數(shù)據(jù)庫、E-Mail和文件系統(tǒng)、文本和圖形、以及各種自定義商用對象。將Delphi提供的系統(tǒng)數(shù)據(jù)源中的db格式數(shù)據(jù)轉換為微軟Access格式文件,同時,在轉換過程中,根據(jù)選中的數(shù)據(jù)表,還能生成響應的創(chuàng)建表的SQL語句。
1.基于ADO的體系結構
一個基于ADO的單層或兩層應用程序通常由這么幾個部分組成:
1)用戶界面,其主要部件是數(shù)據(jù)控件。如果所有的數(shù)據(jù)訪問都是通過程序實現(xiàn)的,則數(shù)據(jù)控件是可選的;
2)一個或多個數(shù)據(jù)集構件,用于從數(shù)據(jù)庫引入數(shù)據(jù);
3)一個或幾個TDataSource構件,用于連接數(shù)據(jù)集與數(shù)據(jù)控件;
4)一個連接構件,用于連接到數(shù)據(jù)倉庫。 連接構件在數(shù)據(jù)集構件和通過數(shù)據(jù)倉庫訪問的數(shù)據(jù)庫之間提供通道。
基于ADO的應用程序的ADO層由以下幾部分組成:Microsoft ADO 2.1,OLEDB數(shù)據(jù)庫或用于數(shù)據(jù)倉庫訪問的ODBC驅動程序,指定的數(shù)據(jù)庫系統(tǒng)(例如,SQL數(shù)據(jù)庫)使用的客戶端軟件、數(shù)據(jù)庫支援系統(tǒng)、數(shù)據(jù)庫。所有這些外部實體必須存在,并且是基于ADO的應用程序可以使用的。圖1 所示為ADO各組件功能。
2.ADO復雜數(shù)據(jù)庫應用基本步驟
1)關閉Delphi中當前所有活動工程,并通過執(zhí)行New Application命令新建一個工程,此時,系統(tǒng)會自動創(chuàng)建一個空白窗體作為程序的默認操作區(qū)。
2)為了實現(xiàn)對Access數(shù)據(jù)庫的連接,需要將ADO控件鏈接到目標庫( Access類型)中,設置ADOConnection1的ConnectionString屬性,連接到目標庫中,其他的ADO空間可以銅鼓他實現(xiàn)對目標庫的連接。這可以通過Delphi提供的想到來實現(xiàn)。
3)將其他ADO控件的Connection屬性都指向ADOConnection1,以實現(xiàn)對目標數(shù)據(jù)庫的連接,然后設置Database空間的DataBaseName為“Iblocal”.
4)在窗體的初始化過程中,還需要對一些控件的默認屬性進行設置:首先將本地機上的所有系統(tǒng)數(shù)據(jù)源顯示在ComBOBox1中,然后將三個按鈕的EnabLED屬性都設置為Fasle:
Session.GetAliasNames(ComBoBx1.
items)。
5)當在ComboBox1中選定一個數(shù)據(jù)源時,需要將該數(shù)據(jù)源中所有數(shù)據(jù)表顯示在ListBox1中,由于本程序需要用到得是db格式的數(shù)據(jù)文件,所以還需設置一個過濾條件,這可以處理ComboBox1de OnChange事件:
Session.GeTTableNames(ComboBox1.
items[ComboBox1.itemindes],'*db',false,false,listbox1.item)。
6)如果單機“獲取表結構”按鈕,程序將分析選中的表的數(shù)據(jù)結構,然后生成響應的SQL語句,然后顯示在Memol控件中。在這個方法的實現(xiàn)過程中,還需要處理一個小問題,就是如何獲取對應表字段的數(shù)據(jù)類型。
7)當SOL語句創(chuàng)建完畢并顯示在Memol控件中,單擊“創(chuàng)建表”將執(zhí)行創(chuàng)建表的命令,這個操作將通過ADDCommand1控件來實現(xiàn):
Adocommand1.CommandText:=memo1.
Text;Adocommand1.Execute.
8)如果單擊“復制數(shù)據(jù)”按鈕,則將選定表中的所有數(shù)據(jù)轉移到目標數(shù)據(jù)庫中對應的表中。
9)至此,完成工作。保存工程文件,然后運行程序。
3.結語
總之,隨著網絡的普及,網絡數(shù)據(jù)庫越來越現(xiàn)實出其重要性,ADO在這方面有著其獨到的強大功能
評論