Delphi.NET (VCL.NET) 早期版本:
DataSet 與 VCL.NET DataSet 不相容,無法直接綁定 TDBGrid、TDataSource 等資料感知控件Borland 提供 Borland.Vcl.ADONETDb.TADONETConnector 元件,橋接 ADO.NET/BDP 資料集與 VCL.NET 資料感知架構。
Borland.Vcl.Design.AdoNet.dll (位於 BDS\Bin)ADONETConnector
uses
System.Data.SqlClient, System.Data, System.ComponentModel,
Borland.Vcl.StdCtrls, Borland.Vcl.DBCtrls, Borland.Vcl.Grids,
Borland.Vcl.DBGrids, Borland.Vcl.Db, Borland.Vcl.ADONETDb;
type
TForm1 = class(TForm)
Button1: TButton;
ADONETConnector1: TADONETConnector;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
procedure Button1Click(Sender: TObject);
private
Connection: SqlConnection;
ProDataSet: DataSet;
Adapter: SqlDataAdapter;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Connection := SqlConnection.Create('連線字串');
Connection.Open;
ProDataSet := DataSet.Create;
Adapter := SqlDataAdapter.Create('SELECT * FROM Product', Connection);
Adapter.Fill(ProDataSet, 'Product');
// 關鍵:將 ADO.NET DataTable 指派給 Connector
ADONETConnector1.DataTable := ProDataSet.Tables[0];
// DataSource1.DataSet := ADONETConnector1; (設計時綁定)
end;
ADO.NET / BDP 層 VCL.NET 資料感知層
┌─────────────────────┐ ┌─────────────────────┐
│ SqlConnection │ │ TDataSource │
│ SqlDataAdapter │ │ TDBGrid │
│ DataSet (ADO.NET) │────────────▶│ TDBNavigator │
│ └─ DataTable[0] │ DataTable │ ▲ │
└─────────────────────┘ │ │ │
│ TADONETConnector │
│ (橋接轉換器) │
└─────────────────────┘
將 SqlConnection/SqlDataAdapter 替換為 BDP 對應類別 (BdpConnection/BdpDataAdapter),其餘邏輯不變。
Borland.Vcl.ADONETDb 單元ADONETConnector 實作 IProviderSupport、IGetDataSet 等介面,模擬 VCL.NET DataSet 行為在早期 Delphi.NET 中,ADONETConnector 是連接 ADO.NET/BDP 資料源與 VCL.NET 資料感知控件的關鍵橋樑。理解其「填充 ADO.NET DataSet → 指派 DataTable 給 Connector → 綁定 DataSource」流程,可快速遷移既有 ADO.NET 邏輯至 VCL.NET 介面開發。