熱點推薦:
您现在的位置: 電腦知識網 >> 軟件專區 >> 正文

delphi實現ado的高級功能

2013-09-12 15:53:21  來源: 軟件專區 

  ADO是Microsoft存取通用數據源的標准引擎。ADO通過封裝OLE DB而能夠存取不同類型的數據,讓應用程序能很方便地通過統一的接口處理各種數據庫。ADO由一組COM對象組成,每一個不同的原生ADO對象負責不同的工作。下面,向大家介紹如何使用原生ADO對象的動態屬性來實現ADO的高級功能。www.sq120.com推薦文章

  ADO原生對象關系圖:
  Connection
  Errors→Error
  Command→Parameters→Parameter
  RecordSet→Fields→Field
一、存取原生ADO對象
  Delphi中的ADO組件頁中的組件為我們通過ADO技術訪問數據庫提供了方便。這些組件封裝了原生的ADO對象。雖然我們利用ADO組件頁中的組件也能編寫出有效率的數據庫程序,但是ADO中的一些屬性和方法仍然是ADOExpress組件沒有封裝進去的,而此時,需要使用這些沒有封裝的屬性和方法,必須還得通過存取原生的ADO對象來使用這些屬性和方法。
  在ADO組件中,每個組件都有一個屬性讓程序員通過它來存取它所封裝的原生ADO對象。下面我們用表1來說明ADO組件頁中ADO組件封裝原生ADO對象的屬性:
  在程序中訪問ADO組件封裝的原生ADO對象,例如:
  Var
  MyRS :_RecordSet;
  MyRS :=ADODataSet1.RecordSet;
  以上這句就是訪問組件封裝的原生ADO對象RecordSet。tw.winGwIt.com


 
二、存取原生ADO對象的動態屬性
  當我們用ADO組件編寫針對特定數據庫的應用程序時,ADO驅動程序會將特定數據庫所能提供的功能存儲在動態屬性之中。在ADO模型中,每一個原生AD
  O對象都有一組動態屬性。
  注意:在Delphi中,只能通過原生的ADO對象來存取動態屬性。
  原生的ADO對象的動態屬性集合存儲在名為Properties的數組結構中,Properties數組中的每一個數組元素Property就對應一個特定的動態屬性。因此,訪問原生ADO對象的動態屬性的基本步驟是:
  1. 通過ADO組件的屬性訪問其封裝的原生的ADO對象;
  2. 利用原生的ADO對象訪問其Properties動態屬性集合;
  3. 在Properties動態屬性集合中訪問Property動態屬性;
  4. 存取Property動態屬性的值,實現ADO組件未封裝的功能。
  Delphi為我們訪問動態屬性集合Properties提供了幾個方便的接口函數供我們調用:
  Function Get_Item(Index : OleV
  ariant) :Property; SafeCall;//根據動態屬性的索引值或名稱獲取動態屬性
  Property Item[Index :OleVariant
  ] :Property Read Get_Item;//根據動態屬性在集合中的索引值來獲取動態屬性
  Delphi也提供了以下的屬性來方便地訪問動態屬性Propery的名稱和值:
  Name 動態屬性的名稱
  Value 動態屬性的值
  為了說明這些原理,我們用一個簡單的例子來說明。這個例子中,程序運行後點擊按鈕,在Memo中就會顯示原生的ADO對象RecordSet的所有動態屬性。
  1. 建立一個新的工程,保存為Project1.dpr;
  2. 在主窗體上放置如下組件:
  TAdoConnection、TAdDataSet、TMemo、TButton
  3. 將TAdoConnection的Conne
  ctionString屬性連接到SQL SERVE
  R 數據庫的Pubs數據庫;
  4. 設置TAdoDataSet的Connecti
  on屬性為上一步中的TAdoConnecti
  on組件;
  5. 編寫按鈕的Button1Click事件處理函數代碼如下:
  procedure TForm1.Button1Click(S
  ender: TObject);
  Var
  i :Integer;
  MyPty :Property_;
  MyPties :Properties;
  MyRS :_RecordSet;
  begin
  AdoDataSet1.Open;
  MyRS :=AdoDataSet1.RecordSet; //獲取原生的ADO對象賦值給MyRS
  MyPties :=MyRS.Properties; //獲取原生ADO對象的動態屬性集合Prop
  erties賦值給MyPties
  For i :=0 to MyPties.Count-1 do //循環取得動態屬性集合Properties中的每一個動態屬性
  begin
  MyPty :=MyPties.Item[i]; //動態屬性集合MyPites的Item屬性根據索引值取得每一個動態屬性賦值給MyPty
  Memo1.Lines.Add(MyPty.Name); //動態屬性MyPty的Name屬性表示該動態屬性的名字,將動態屬性的名字加入到Memo1列表中。
  end;
  end;

 
From:http://tw.wingwit.com/Article/Software/201309/335.html
  • 上一篇文章:

  • 下一篇文章:
  • Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.