ADO (ActiveX Data Objects) 是微軟基於 OLE DB 的資料存取模型,透過 COM 介面實現統一的資料存取。C++Builder 5 (Delphi 5) 引入 VCL 封裝的 ADO 元件 (TADOConnection, TADOTable, TADOQuery, TADODataSet, TADOCommand),使 ADO 程式設計如同傳統 BDE 一樣直觀,且支援無 DSN 連接、ASP 應用等現代場景。
| 元件 | 用途 |
|---|---|
TADOConnection | 集中管理連接字串、交易、連接池 |
TADOTable | 單表操作、索引、篩選 |
TADOQuery | 任意 SQL 查詢、參數化查詢 |
TADODataSet | 通用資料集,支援 Shape、回傳結果集的 SQL |
TADOCommand | 執行不回傳結果集的 DML (INSERT/UPDATE/DELETE)、預存程序 |
TADOConnection,設定 ConnectionString:
Connection 屬性指向此 TADOConnection,或直接在各元件設定 ConnectionString。Shape 是 ADO 的階層式資料集指令,可在單一查詢中定義主從關係。
| 名稱 | 類型 | 關鍵屬性 |
|---|---|---|
| ADOConnection1 | TADOConnection | ConnectionString → Northwind.mdb (Provider=MSDataShape) |
| ADODataSet1 | TADODataSet | Connection=ADOConnection1, CommandText=Shape 指令 |
| DataSource1 | TDataSource | DataSet=ADODataSet1 |
| DBGrid1 | TDBGrid | DataSource=DataSource1 |
| ADODataSet2 | TADODataSet | DataSetField=ADODataSet1.Details |
| DataSource2 | TDataSource | DataSet=ADODataSet2 |
| DBGrid2 | TDBGrid | DataSource=DataSource2 |
SHAPE {SELECT * FROM Orders}
APPEND ({SELECT * FROM [Order Details]} AS Details
RELATE OrderID TO OrderID)
Orders。Order Details,別名 Details。OrderID。ADODataSet1 → Fields Editor → Add all fields,確保 Details 欄位被識別為 TDataSetField。ADODataSet2.DataSetField = ADODataSet1.Details。DBGrid1 的 Columns 編輯器中隱藏 Details 欄位(避免顯示「(DataSet)」文字)。游標在 DBGrid1 (Orders) 移動時,DBGrid2 自動顯示該訂單的明細條目,無需額外代碼。
ADOQuery1->Parameters->ParamByName("CustID")->Value = 123;ADOConnection1->BeginTrans() / CommitTrans() / RollbackTrans()。ExecuteOptions = eoAsyncExecute + OnExecuteComplete 事件。ADODataSet1->CursorLocation = clUseClient 可離線操作。C++Builder 5 的 ADO 元件提供了強大且易用的資料存取能力。善用 TADOConnection 集中管理連接、TADODataSet 搭配 Shape 指令實現 Master/Detail、TADOCommand 執行 DML,能快速構建健壯的資料庫應用程式。