新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ADO的復(fù)雜數(shù)據(jù)庫編程的應(yīng)用

基于ADO的復(fù)雜數(shù)據(jù)庫編程的應(yīng)用

作者: 時間:2016-12-21 來源:網(wǎng)絡(luò) 收藏

  0 引言

  ADO(ActiveX Data Objects)是微軟提供對各種數(shù)據(jù)格式的高層接口(highlevelinterface),該接口已經(jīng)成為訪問數(shù)據(jù)庫的新的標(biāo)準(zhǔn)。使用這種接口的數(shù)據(jù)庫又稱為OLE DB數(shù)據(jù)庫。由于網(wǎng)絡(luò)數(shù)據(jù)庫的廣泛應(yīng)用,ADO現(xiàn)在越來越成為數(shù)據(jù)庫編程人員眼中的寵兒,ADO在復(fù)雜數(shù)據(jù)庫編程方面的功能非常強(qiáng)大。OLE DB數(shù)據(jù)庫可以使我們方便地訪問各種類型的數(shù)據(jù)庫,包括關(guān)系型或非關(guān)系型數(shù)據(jù)庫、E-Mail和文件系統(tǒng)、文本和圖形、以及各種自定義商用對象。將Delphi提供的系統(tǒng)數(shù)據(jù)源中的db格式數(shù)據(jù)轉(zhuǎn)換為微軟Access格式文件,同時,在轉(zhuǎn)換過程中,根據(jù)選中的數(shù)據(jù)表,還能生成響應(yīng)的創(chuàng)建表的SQL語句。

  1.基于ADO的體系結(jié)構(gòu)

  一個基于ADO的單層或兩層應(yīng)用程序通常由這么幾個部分組成:

  1)用戶界面,其主要部件是數(shù)據(jù)控件。如果所有的數(shù)據(jù)訪問都是通過程序?qū)崿F(xiàn)的,則數(shù)據(jù)控件是可選的;

  2)一個或多個數(shù)據(jù)集構(gòu)件,用于從數(shù)據(jù)庫引入數(shù)據(jù);

  3)一個或幾個TDataSource構(gòu)件,用于連接數(shù)據(jù)集與數(shù)據(jù)控件;

  4)一個連接構(gòu)件,用于連接到數(shù)據(jù)倉庫。 連接構(gòu)件在數(shù)據(jù)集構(gòu)件和通過數(shù)據(jù)倉庫訪問的數(shù)據(jù)庫之間提供通道。

  基于ADO的應(yīng)用程序的ADO層由以下幾部分組成:Microsoft ADO 2.1,OLEDB數(shù)據(jù)庫或用于數(shù)據(jù)倉庫訪問的ODBC驅(qū)動程序,指定的數(shù)據(jù)庫系統(tǒng)(例如,SQL數(shù)據(jù)庫)使用的客戶端軟件、數(shù)據(jù)庫支援系統(tǒng)、數(shù)據(jù)庫。所有這些外部實體必須存在,并且是基于ADO的應(yīng)用程序可以使用的。圖1 所示為ADO各組件功能。

  

  2.ADO復(fù)雜數(shù)據(jù)庫應(yīng)用基本步驟

  1)關(guān)閉Delphi中當(dāng)前所有活動工程,并通過執(zhí)行New Application命令新建一個工程,此時,系統(tǒng)會自動創(chuàng)建一個空白窗體作為程序的默認(rèn)操作區(qū)。

  2)為了實現(xiàn)對Access數(shù)據(jù)庫的連接,需要將ADO控件鏈接到目標(biāo)庫( Access類型)中,設(shè)置ADOConnection1的ConnectionString屬性,連接到目標(biāo)庫中,其他的ADO空間可以銅鼓他實現(xiàn)對目標(biāo)庫的連接。這可以通過Delphi提供的想到來實現(xiàn)。

  3)將其他ADO控件的Connection屬性都指向ADOConnection1,以實現(xiàn)對目標(biāo)數(shù)據(jù)庫的連接,然后設(shè)置Database空間的DataBaseName為“Iblocal”.

  4)在窗體的初始化過程中,還需要對一些控件的默認(rèn)屬性進(jìn)行設(shè)置:首先將本地機(jī)上的所有系統(tǒng)數(shù)據(jù)源顯示在ComBOBox1中,然后將三個按鈕的EnabLED屬性都設(shè)置為Fasle:

  Session.GetAliasNames(ComBoBx1.

  items)。

  5)當(dāng)在ComboBox1中選定一個數(shù)據(jù)源時,需要將該數(shù)據(jù)源中所有數(shù)據(jù)表顯示在ListBox1中,由于本程序需要用到得是db格式的數(shù)據(jù)文件,所以還需設(shè)置一個過濾條件,這可以處理ComboBox1de OnChange事件:

  Session.GeTTableNames(ComboBox1.

  items[ComboBox1.itemindes],'*db',false,false,listbox1.item)。

  6)如果單機(jī)“獲取表結(jié)構(gòu)”按鈕,程序?qū)⒎治鲞x中的表的數(shù)據(jù)結(jié)構(gòu),然后生成響應(yīng)的SQL語句,然后顯示在Memol控件中。在這個方法的實現(xiàn)過程中,還需要處理一個小問題,就是如何獲取對應(yīng)表字段的數(shù)據(jù)類型。

  7)當(dāng)SOL語句創(chuàng)建完畢并顯示在Memol控件中,單擊“創(chuàng)建表”將執(zhí)行創(chuàng)建表的命令,這個操作將通過ADDCommand1控件來實現(xiàn):

  Adocommand1.CommandText:=memo1.

  Text;Adocommand1.Execute.

  8)如果單擊“復(fù)制數(shù)據(jù)”按鈕,則將選定表中的所有數(shù)據(jù)轉(zhuǎn)移到目標(biāo)數(shù)據(jù)庫中對應(yīng)的表中。

  9)至此,完成工作。保存工程文件,然后運行程序。

  3.結(jié)語

  總之,隨著網(wǎng)絡(luò)的普及,網(wǎng)絡(luò)數(shù)據(jù)庫越來越現(xiàn)實出其重要性,ADO在這方面有著其獨到的強(qiáng)大功能



評論


技術(shù)專區(qū)

關(guān)閉