CRecordset::GetFieldValue

無効 GetFieldValue (LPCTSTR lpszName、CDBVariantamp; varValue短いnFieldType= DEFAULT_FIELD_TYPE);
(CDBException、CMemoryException) を投げます。(&A)

無効 GetFieldValue (短い nIndex、CDBVariantamp; varValue短いnFieldType= DEFAULT_FIELD_TYPE);
(CDBException、CMemoryException) を投げます。(&A)

無効 GetFieldValue (LPCTSTR lpszName、CStringamp;strvalue:(&A) );
throw (CDBException, CMemoryException);

無効 GetFieldValue (短い nIndex、CStringamp;strvalue:(&A) );
throw (CDBException, CMemoryException);

パラメーター

lpszName

フィールドの名前。

varValue

フィールドの値を格納するCDBVariantオブジェクトへの参照。

nFieldType

ODBC C データ型、フィールドの。DEFAULT_FIELD_TYPE既定値を使用して、次の表に基づいて、SQL データ型から C データ型を決定するGetFieldValueを強制します。それ以外の場合、データを直接入力または互換性のあるデータ型を選択できます;たとえば、 SQL_C_CHARに任意のデータ型を格納することができます。

C データ型 SQL データ型
SQL_C_BIT SQL_BIT
SQL_C_UTINYINT SQL_TINYINT
SQL_C_SSHORT SQL_SMALLINT
SQL_C_SLONG SQL_INTEGER
SQL_C_FLOAT SQL_REAL
SQL_C_DOUBLE SQL_FLOAT
SQL_DOUBLE
SQL_C_TIMESTAMP SQL_DATE
SQL_TIME
SQL_TIMESTAMP
SQL_C_CHAR SQL_NUMERIC
について SQL_DECIMAL
SQL_BIGINT
SQL_CHAR
かつ
SQL_LONGVARCHAR
SQL_C_BINARY SQL_BINARY
SQL_VARBINARY
SQL_LONGVARBINARY

ODBC のデータ型の詳細については、「SQL データ型」の付録 D ODBC SDK programmer's Referenceの「C データ型」トピックを参照してください。

nIndex

フィールドの 0 から始まるインデックス。

strvalue:

フィールドのデータ型に関係なく、テキスト フィールドの値を格納するCStringオブジェクトへの参照に変換。

解説

現在のレコードのフィールド データを取得するにはこのメンバー関数を呼び出します。名前またはインデックスでは、フィールドを見ることができます。CDBVariantオブジェクトまたはCStringオブジェクトでフィールド値を格納することができます。

バルク行フェッチを実装している場合は、現在のレコードは常に、最初のレコード セット内の行に配置されます。GetFieldValue行セット内のレコードを使用するには、まずその行セット内の目的の行にカーソルを移動するには、 SetRowsetCursorPositionメンバー関数を呼び出す必要があります。[ GetFieldValueをその行に対して呼び出します。バルク行フェッチを実装するには、 Openメンバー関数でdwOptionsパラメータのCRecordset::useMultiRowFetchオプションを指定する必要があります。

GetFieldValueを使用して、静的に、デザイン時にバインドするのではなく実行時に動的にフィールドを取得することができます。たとえば、 CRecordsetから直接レコード セット オブジェクトを宣言している場合は、フィールドのデータを取得するGetFieldValueを使用する必要があります;レコード フィールド エクス チェンジ (RFX) またはバルク レコード フィールド エクス チェンジ (Bulk RFX) は実装されていません。

特価;CRecordsetから派生することがなく、レコード セット オブジェクトを宣言する場合は、読み込まれた ODBC カーソル ライブラリは必要はありません。カーソル ライブラリでは、レコード セットに少なくとも 1 つのバインドされた列があることが必要です。ただし、 CRecordsetを直接使用すると、次の列にバインドされます。カーソル ライブラリが読み込まれるかどうか、メンバー :openexcdatabase::open制御を機能します。(&N)。

GetFieldValue ODBC API 関数SQLGetDataを呼び出します。フィールドの値の実際の長さの値はSQL_NO_TOTALドライバーを出力する場合、 GetFieldValue例外をスローします。SQLGetDataの詳細については、 ODBC SDK programmer's Referenceを参照してください。

次のサンプル コードを示していますGetFieldValue直接CRecordsetから宣言されたレコード セット オブジェクトの呼び出し。

//を作成し、データベース オブジェクトを開く//は、カーソル ライブラリが読み込まれないCDatabase db;db。OpenEx (NULL, CDatabase::forceOdbcDialog);//を作成し、レコード セット オブジェクトを開く・ CRecordset から直接。注意してください、//テーブルを接続しているデータベースに存在する必要があります。・最適の前方向タイプのレコード セットの使用//だけ、MoveNext は必要があるのでパフォーマンス、CRecordset rs (amp; db);rs。開く (CRecordset::forwardOnly、_T ("選択 ※ SomeTable から「));//CDBVariant オブジェクトを作成します。//フィールド データを格納CDBVariant varValue;//ループ処理にレコード セットを・ GetFieldValue を用いたと//取得する GetODBCFieldCount//すべての列のデータを短い nFields rs =。GetODBCFieldCount ();中 (! rs。IsEOF ()){(短いインデックス = 0; インデックス < nFields; インデックス + +){rs。GetFieldValue (インデックス、varValue);・ ・何か varValue を}rs。MoveNext ();}rs。閉じる ();db。閉じる)

特価;CDaoRecordsetDAO クラスとは異なり、 CRecordsetにはSetFieldValueメンバー関数はありません。直接CRecordsetからオブジェクトを作成する場合は、効果的に読み取り専用です。(&N)。

バルク行フェッチの詳細については、資料を参照してください レコード セット: レコードのフェッチ一括 (ODBC)Visual の C++ プログラマのガイド

CRecordset の概要|nbsp;クラス メンバー |階層図(&N)

参照特価;CRecordset::DoFieldExchangeCRecordset::DoBulkFieldExchangeCRecordset::GetODBCFieldCountCRecordset::GetODBCFieldInfoCRecordset::SetRowsetCursorPosition(&N)

Index