無効 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を直接使用すると、次の列にバインドされます。カーソル ライブラリが読み込まれるかどうか、メンバー :openexとcdatabase::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::DoFieldExchange、 CRecordset::DoBulkFieldExchange、 CRecordset::GetODBCFieldCount、 CRecordset::GetODBCFieldInfo、 CRecordset::SetRowsetCursorPosition(&N)