共用方式為


Visual C++ 延伸模組

IADORecordBinding 介面

Microsoft Visual C++ Extensions for ADO 將 Recordset 物件的欄位關聯或繫結到 C/C++ 變數。 每當系結 Recordset 的目前數據列 變更時,Recordset 中的所有系結字段都會複製到 C/C++ 變數。 如有必要,複製的數據會轉換成 C/C++ 變數的宣告數據類型。

IADORecordBinding 介面的 BindToRecordset 方法會將字段系結至 C/C++ 變數。 AddNew 方法會將新資料列新增至系結 RecordsetUpdate 方法會在 Recordset的新數據列中填入字段,或以 C/C++ 變數的值更新現有數據列中的欄位。

IADORecordBinding 介面是由 Recordset 物件實作。 您不會自行撰寫實作的程序代碼。

系結條目

Visual C++ Extensions for ADO 將 Recordset 物件的欄位對應到 C/C++ 變數。 欄位與變數之間的對應定義稱為 系結項目。 巨集會提供數值、固定長度和可變長度資料的綁定項目。 系結專案和 C/C++ 變數會在衍生自 Visual C++ Extensions 類別的類別中宣告,CADORecordBindingCADORecordBinding 類別是由系結條目巨集在內部定義。

ADO 會在內部將這些巨集中的參數對應至 OLE DB DBBINDING 結構,並建立 OLE DB 存取子 物件來管理字段和變數之間的數據移動和轉換。 OLE DB 會將數據定義為由三個部分組成:儲存數據的 緩衝區;狀態,指出欄位是否成功儲存在緩衝區中,或變數應該如何還原至字段;和數據的 長度。 (如需詳細資訊,請參閱 OLE DB 程式設計人員參考中的 取得和設定數據 (OLE DB)

標頭檔案

在應用程式中包含下列檔案,以使用適用於 ADO 的 Visual C++ Extensions:

#include <icrsint.h>

系結記錄集欄位

將記錄集欄位系結至 C/C++ 變數

  1. 建立衍生自 CADORecordBinding 類別的類別。

  2. 在衍生類別中指定系結項目和對應的 C/C++ 變數。 請將位於 BEGIN_ADO_BINDINGEND_ADO_BINDING 巨集之間的系結項目加上括號。 請勿以逗號或分號終止巨集。 每個巨集會自動設定適當的分隔符號。

    請為要對應至 C/C++ 變數的每個欄位指定一個繫結項目。 在宏 ADO_FIXED_LENGTH_ENTRYADO_NUMERIC_ENTRYADO_VARIABLE_LENGTH_ENTRY 系列中選擇適當的成員。

  3. 在您的應用程式中,建立衍生自 CADORecordBinding類別的實例。 從 Recordset取得 IADORecordBinding 介面。 然後呼叫 bindToRecordset 方法 方法,將 Recordset 字段系結至 C/C++ 變數。

如需詳細資訊,請參閱 Visual C++ Extensions 範例

介面方法

IADORecordBinding 介面有三種方法:BindToRecordsetAddNewUpdate。 每個方法唯一的參數是指向從 CADORecordBinding派生而來的類別實例的指標。 因此,AddNewUpdate 方法無法指定其 ADO 方法名稱的任何參數。

語法

BindToRecordset 方法會將 Recordset 字段與 C/C++ 變數產生關聯。

BindToRecordset(CADORecordBinding *binding)

AddNew 方法會叫用其同名的 ADO AddNew 方法,將新的資料列新增至 Recordset

AddNew(CADORecordBinding *binding)

Update 方法會呼叫同名的 ADO Update 方法,以更新 Recordset

Update(CADORecordBinding *binding)

輸入綁定巨集

繫結條目巨集定義了 資料集 欄位與變數之間的關聯。 開頭和結尾巨集會分隔綁定項集。

提供的巨集系列可用於處理固定長度的資料,如 adDateadBoolean;數值資料,如 adTinyIntadIntegeradDouble;以及可變長度的資料,如 adCharadVarCharadVarBinary。 除了 adVarNumeric之外,所有數值類型也是固定長度的類型。 每個系列都有不同的參數集合,因此您可以排除不感興趣的系結資訊。

如需詳細資訊,請參閱 OLE DB 程式設計人員參考的 附錄 A:數據類型

開始系結條目

BEGIN_ADO_BINDING類別

Fixed-Length 數據

ADO_FIXED_LENGTH_ENTRY序數、資料類型、緩衝區、狀態、修改

ADO_FIXED_LENGTH_ENTRY2序數、數據類型、緩衝區、修改

數值數據

ADO_NUMERIC_ENTRY序數、資料類型、緩衝區、精度、刻度、狀態、修改

ADO_NUMERIC_ENTRY2序數、數據類型、緩衝區、精度、規模、修改

Variable-Length 數據

ADO_VARIABLE_LENGTH_ENTRY序號、資料類型、緩衝區、大小、狀態、長度、修改

ADO_VARIABLE_LENGTH_ENTRY2序數、DataType、Buffer、Size、Status、Modify

ADO_VARIABLE_LENGTH_ENTRY3序數、資料類型、緩衝區、大小、長度、修改

ADO_VARIABLE_LENGTH_ENTRY4序數、DataType、Buffer、Size、Modify

結束系結項目

END_ADO_BINDING()

參數 描述
類別 定義連結項和 C/C++ 變數的類別。
序數 序數,從1開始,對應於您的 C/C++ 變數的 記錄集中的 欄位。
DataType C/C++ 變數的對等 ADO 資料類型(如需有效數據類型的清單,請參閱 DataTypeEnum)。 視需要,Recordset 欄位的值將會轉換成此數據類型。
緩衝區 Recordset 欄位儲存於其中的 C/C++ 變數名稱。
大小 Buffer位元組的大小上限。 如果 緩衝區 將包含可變長度字元串,則應預留終止空字元的空間。
狀態 變數的名稱,指出 Buffer 的內容是否有效,以及欄位轉換成 DataType 是否成功。

此變數的兩個最重要的值是 adFldOK,這表示轉換成功;和 adFldNull,這表示字段的值會是類型為 VT_NULL 的 VARIANT,而不只是空白。

Status 的可能值列在下一個表格「狀態值」中。
修改 布林旗標;若為 TRUE 則表示允許 ADO 使用 Buffer中的值更新相應的 Recordset 欄位。

將布爾值 參數修改為 TRUE,讓 ADO 更新系結欄位,如果想要檢查欄位但不要變更,則為 FALSE。
精確度 可以在數值變數中表示的數字數目。
調整 數值變數中的小數位數。
長度 四位元組變數的名稱,其中包含 Buffer中數據的實際長度。

狀態值

Status 變數的值表示字段是否成功複製到變數。

設定數據時,狀態 可能會設定為 adFldNull,以表示應將 記錄集 的欄位設為 null。

恒定的 價值 描述
adFldOK 0 傳回非空欄位值。
adFldBadAccessor 1 系結無效。
adFldCantConvertValue 2 由於符號不符或數據溢位以外的原因,無法轉換值。
adFldNull 3 取得欄位時,表示傳回 null 值。

設定欄位時,表示欄位應該設定為 NULL 欄位時,欄位無法編碼 NULL 本身(例如字元陣列或整數)。
廣告欄位截斷 4 可變長度的數據或數值數位已截斷。
adFldSignMismatch 5 值為帶正負號,且變數數據類型為不帶正負號。
adFldDataOverFlow 6 值大於可以儲存在該變數的資料類型中的最大值。
adFldCantCreate 7 未知的數據行類型和欄位已經開啟。
adFldUnavailable 8 無法確定欄位值,例如,在一個沒有預設值且尚未指派的新欄位上。
adFldPermissionDenied 9 更新時,沒有寫入數據的許可權。
adFldIntegrityViolation 10 更新時,域值會違反數據行完整性。
adFldSchemaViolation 11 更新時,域值會違反數據行架構。
adFldBadStatus 12 更新時,狀態參數無效。
adFldDefault 13 更新時,會使用預設值。

另請參閱

Visual C++ 延伸模組範例Visual C++ 延伸模組標頭