レコード フィールド エクスチェンジ: RFX 関数の使い方
このトピックでは、DoFieldExchange オーバーライドの中心部分となる RFX 関数呼び出しの使用方法について説明します。
注意
このトピックの内容は、バルク行フェッチが実装されていない CRecordset の派生クラスを対象にしています。 バルク行フェッチを使用している場合は、バルク レコード フィールド エクスチェンジ (Bulk RFX: Bulk Record Field Exchange) が実装されています。 Bulk RFX と RFX は似ています。 両者の差異については、「レコードセット : バルク行フェッチ (ODBC)」を参照してください。
RFX グローバル関数は、データ ソースの列とレコードセットのフィールド データ メンバー間でデータを交換します。 レコードセットのメンバー関数 DoFieldExchange に RFX 関数呼び出しコードを作成します。 ここでは、RFX 関数の概要と RFX 関数が用意されているデータ型について説明します。 新しく定義したデータ型に対する RFX 関数を独自に作成する方法については、「テクニカル ノート 43: RFX ルーチン」で説明されています。
RFX 関数の構文
各 RFX 関数は、次の 3 つのパラメーターを使用します (これ以外に 1 個または 2 個のオプション パラメーターを使用する関数もあります)。
CFieldExchange オブジェクトへのポインターを返します。 DoFieldExchange に渡された pFX ポインターをそのまま渡します。
データ ソース中の列名。
レコードセット クラス内の対応するフィールド データ メンバーまたはパラメーター データ メンバーの名前。
転送する文字列または配列の最大長を指定できる関数もあります。 既定値は 255 バイトですが、必要に応じて変更できます。 最大値は、CString オブジェクトの最大値である INT_MAX (2,147,483,647 バイト) ですが、通常はそれ以前にドライバーの限界に達します。
RFX_Text 関数では、列のデータ型を指定する第 5 パラメーターを取る場合もあります。
詳細については、『MFC リファレンス』の「マクロ、グローバル関数、およびグローバル変数」で各 RFX 関数の解説を参照してください。 パラメーターの特殊な使い方の例については、「レコードセット : 集計値の計算 (ODBC)」を参照してください。
RFX 関数とデータ型
クラス ライブラリには、データ ソースとレコードセット間で各種のデータ型を転送するための RFX 関数が多数用意されています。 次の表に、RFX 関数とデータ型の対応を示します。 RFX 関数を直接呼び出すには、データ型に応じてこれらの関数を使い分けます。
関数 |
データ型 |
---|---|
RFX_Bool |
BOOL |
RFX_Byte |
BYTE |
RFX_Binary |
CByteArray |
RFX_Double |
double |
RFX_Single |
float |
RFX_Int |
int |
RFX_Long |
long |
RFX_LongBinary |
CLongBinary |
RFX_Text |
CString |
RFX_Date |
CTime |
詳細については、『MFC リファレンス』の「マクロ、グローバル関数、およびグローバル変数」で各 RFX 関数の解説を参照してください。 C++ のデータ型の SQL のデータ型への対応については、「SQL : SQL と C++ のデータ型 (ODBC)」の表「ANSI SQL データ型と C++ データ型の対応」を参照してください。
参照
参照
概念
レコード フィールド エクスチェンジ: RFX の動作のしくみ