程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 在CB5中使用ADO數據庫編程

在CB5中使用ADO數據庫編程

編輯:關於C++

本文介紹了在 C++Builder 5環境下新增的ADO控件的使用方法,並給出了一個簡單的實例。

一、ADO概述

ADO(Active Data Object) 是微軟公司基於OLE DB的數據庫模型。它實現了一系列COM接口,通過數據提供者(Data Provider)和數據使用者( Data Consumer)來實現廣義的數據存取。ADO模型一方面簡化了數據存取,例如使用Jet OLE DB Provider可以實現Access數據庫的無DSN連接;另一方面,在ASP等Internet應用中也得到了廣泛的使用。

在C++Builder 5/Delphi 5中諸多新增特性中,ADO數據控件的引入是比較引人注目的,它使ADO編程和在Visual Basic 6中一樣容易。由於VCL類庫對ADO的封裝更加合理,舊的數據控件可以很容易地升級到ADO支持,而不象在VB中某些DAO或RDO控件無法兼容ADO。

二、使用ADO控件

在C++Builder 5中,ADO控件實質上是一種數據訪問組件。如果讀者有過C++Builder先前版本的數據庫開發經驗,就會發現與數據訪問組件相連的數據源組件(TdataSource) 和數據感知組件(如TDBGrid)的使用方法和以前一樣,只需把 TdataSource 連到ADO控件上即可。

如果要實現簡單的表操作或查詢,可以使用TADOTable或TADOQuery。更一般地,可以使用TADODataSet控件,其基本屬性的設置方法如下:

(1)ConnectionString屬性:點擊屬性欄中的省略號,出現配置窗口,選"Use Connection String",按Build按鈕。在接下來的窗口中選擇數據提供者,以微軟的Northwind示例Access數據庫為例,選Microsoft Jet 4.0 OLE DB Provider, 按Next按鈕,選擇數據庫的路徑和文件名。點擊Test Connection按鈕可以測試數據庫連接。點擊"確定"。

(2)CommandText屬性:可以使用CommandText Editor生成SQL語句或Shape語句。

注意,TADODataSet不支持不返回結果集的DML語句,如DELETE,INSERT,UPDATE。如果要使用這些語句,選擇TADOCommand或TADOQuery。

這些ADO控件自身已能實現數據庫連接,也可以設置其Connection屬性為一個TADOConnection控件名,而在 TADOConnection控件中設置 ConnectionString屬性。所有屬性也可以用代碼在運行期間設置。

三、一個Master/Detail實例

下面以一個簡單的實例說明ADO控件的應用。這裡我們用Shape語句實現Master/Detail關系。關於Shape語句的詳細解釋,請參考MSDN文檔。

1. 新建一個項目,並在窗體中放置下列控件(帶省略號的屬性值先不設置):

名稱 控件類型 屬性 屬性值

ADOConnection1 TADOConnection ConnectionString …

ADODataSet1 TADODataSet Connection ADOConnection1 CommandText…

DataSource1 TDataSource DataSet ADODataSet1

DBGrid1 TDBGrid DataSource DataSource1

ADODataSet2 TADODataSet DataSetField …

DataSource2 TDataSource DataSet ADODataSet2

DBGrid2 TDBGrid DataSource DataSource2

2. 設置 ADOConnection1的ConnectionString值

選擇Data Provider為MSDataShape,並設置Northwind數據庫的路徑和名稱。

3. 設置 ADODataSet1的CommandText值如下:

SHAPE {select * from Orders}

APPEND ({select * from [Order Details]} AS Details

RELATE OrderID TO OrderID)

這裡定義了主表Orders和子表Order Details通過OrderID的連接。

4. 在ADODataSet1控件上右擊,選Fields Editor…->右擊->選Add fields… 或Add all fields,務必選中"Details"項,這是我們在Shape語句中定義的用於子表連接主表的數據集。

5. 設置

ADODataSet2的DataSetField值,這時可供選擇的值為ADODataSet1Details,選中它,表明與ADODataSet1的Details列相連。

6. 出現在 DBGrid1中的 Details 列,其每個記錄都是DataSet類型的。可以在DBGrid1中隱藏 Details列的顯示:選擇 DBGrid1的Columns屬性,在彈出窗口的工具條上點擊 Add all Fields,選中 Details,點擊Delete Selected.

7. 運行該程序,當數據指針在主表Orders中移動時,子表Order Details自動更新以顯示不同訂單的明細條目。

從以上實例看出, C++Builder 5完全具備開發復雜的ADO應用程序的能力,其強大的VCL控件使開發者能集中注意力於數據庫的邏輯與功能設計,而不必關心繁復的常規代碼和操作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved