SQL ServerのSQLBindColを

説明

編集します

バージョンが導入されました:ODBC 1.0
規格に準拠:ISO 92
機能:のSQLBindColはにバインドされたアプリケーションデータバッファリングされ た結果セット の列を
関数のプロトタイプ:SQLRETURNのSQLBindCol(
SQLHSTMT StatementHandleに、
SQLUSMALLINT ColumnNumberに、
SQLSMALLINT TargetTypeに、
SQLPOINTERのTargetValuePtr、
SQLINTEGER BufferLengthに、
SQLLEN * StrLen_or_Indは)。

パラメータ

編集します
StatementHandleに
ハンドル[Enter]を声明
ColumnNumberに
[入力] 結果セット の列数に結合することができます。ブックマークバーとしてゼロ増分番号番号0から列番号。いいえブックマーク場合-つまり、この宣言属性は、次いで1 SQL_UB_OFF--から列番号に設定されてカウントを開始しSQL_ATTR_USE_BOOKMARKS。
TargetTypeに
[入力] *のTargetValuePtrはSQLFetchの、のSQLFetchScroll、てSQLBulkOperationsのSQLSetPosにより、またはからように、Cデータ・タイプ識別子バッファと呼ば データソース のSQLSetPosを介してデータを送信するときてSQLBulkOperationsまたは、データは、このタイプのドライバにデータ変換を取得しますデータソースは、ドライバは、この種のデータを変換するとき。
TargetValuePtr
[入力/出力]は、列データバッファに結合するために使用される ポインタ SQLFetchのSQLFetchScrollと、バッファにデータを返します。操作が特定されるとてSQLBulkOperationsは、バッファにデータを返すSQL_FETCH_BY_BOOKMARK。動作はSQL_ADDまたはSQL_UPDATE_BY_BOOKMARKである場合、バッファからデータを取得します。動作はSQL_REFRESHである場合、のSQLSetPosは、バッファにデータを返す;操作はSQL_UPDATEである場合、バッファからデータを取得します。TargetValuePtrがヌルである場合 、ポインタ 、カラムドライバは、データバッファをアンバインドします。アプリケーションは、SQL_UNBINDオプションでのSQLFreeStmtを呼び出すことにより、すべての列をバインド解除することができます。パラメータのTargetValuePtrのSQLBindCol呼び出しがnullの場合 、ポインタ とStrLen_or_IndPtrのが有効な値であり、そのアプリケーションをキャンセルするためにバインドされているが、カラムは、カラム/結合バッファーの長さが示されたままです。
BufferLengthに
[入力] *のTargetValuePtrが指すバッファの長さのバイト数。 ドライバー のTargetValuePtr BufferLengthには、このような文字やバイナリとして復帰可変長データの使用を避けるために*書かれた境界。ことに注意してください ドライバは 時にヌルターミネータ*のTargetValuePtr計算する文字データを返します。* TargetValuePtrバッファーは、このようにヌル終端文字スペースを含むか、または ドライバが データを切り捨てます。ときに 、運転者が そのような整数またはデータ構造として、固定長のデータを返し、ドライバがBufferLengthにパラメータを無視し、バッファがデータを受信するのに十分な大きさであるか否かを判断します。したがって、そうでない場合、アプリケーションは、所与の長さのデータをバッファリングする十分な大きさを割り当てることが重要である 運転者が バッファ境界に書き込まれます。0未満BufferLengthには、SQLSTATE HY090(無効な文字列またはバッファの長さ)を返すのSQLBindCol場合、ゼロに等しい結果を返さないTargetTypeが文字タイプとして指定されている場合、しかし、アプリケーションはBufferLengthにはISOので、0に設定されたくありませんCLI-適応 ドライバは、 このケースではSQLSTATE HY090を返します。
StrLen_or_IndPtr
[IN / OUT]ポインタが列の長さを結合する/示されるバッファ。SQLFetchのSQLFetchScrollとバッファに値を戻します。操作のときSQL_ADD、SQL_UPDATE_BY_BOOKMARK、またはSQL_DELETE_BY_BOOKMARKてSQLBulkOperationsがバッファから値を取得します。動作はSQL_FETCH_BY_BOOKMARKてSQLBulkOperations操作がSQL_REFRESHのSQLSetPosこのバッファの値を返すバッファに値を返すとき、しかしSQL_UPDATEとして動作するとき、それはバッファから値を取得します。SQLFetch、のSQLFetchScroll、てSQLBulkOperations、および値以下のSQLSetPosは、長さ/バッファに戻すことができるが示します:
有効なデータの長さlを返します
リットルSQL_NO_TOTAL
リットルSQL_NULL_DATA
以下の値がてSQLBulkOperationsを示すために、アプリケーション・長さ/緩衝液中または使用のSQLSetPosために配置することができます。
Lは、送信するデータの長さであります
リットルSQL_NTS
リットルSQL_NULL_DATA
リットルSQL_DATA_AT_EXEC
LのSQL_LEN_DATA_AT_EXECマクロ結果
リットルSQL_COLUMN_IGNORE
バッファおよびバッファを指示するバッファ長が分離されている場合、その後、バッファーのみ表示SQL_NULL_DATAを返すことができ、バッファの長さは、他のすべての値を返すことができます。StrLen_or_IndPtrのヌルポインタは、次に利用可能な長さまたはインジケータ値が存在しない場合。データはNULLをフェッチし、データエラー時にするときです。

返却値

編集します
SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_ERROR、或のSQL_INVALID_HANDLE。
注意:このSDKの機能を使用すると、関連セクションの多くが含ま、ユーザーは慎重にしなければなりません。
サンプルコード:
NAME_LEN 50の#define
PHONE_LEN 10の#define
SQLCHAR szName [NAME_LEN] szPhone [PHONE_LEN]。
SQLINTEGER sCustID、cbName、cbCustID、cbPhone。
SQLHSTMTのHSTMT。
SQLRETURNのRETCODE。
RETCODE = SQLExecDirectの(HSTMT、
"2、1、3で顧客注文からCUSTID、NAME、電話を選択"、
SQL_NTS);
もし(リターンコード== SQL_SUCCESS || RETCODE == SQL_SUCCESS_WITH_INFO)
{
/ *バインド列1,2、及び3 * /
SQLBindCol(HSTMT、1、SQL_C_ULONG、&sCustID、0、&cbCustID)。
SQLBindCol(HSTMT、2、SQL_C_CHAR、szName、NAME_LEN、&cbName)。
SQLBindCol(HSTMT、3、SQL_C_CHAR、szPhone、PHONE_LEN、&cbPhone)。
/ *データの各行を取得し、印刷します。オン */
/ *エラーは、メッセージを表示して終了。* /
しばらく(TRUE)
{
RETCODE =のSQLFetch(HSTMT)。
もし(リターンコード== SQL_ERROR || RETCODE == SQL_SUCCESS_WITH_INFO)
{
show_error();
}
もし(リターンコード== SQL_SUCCESS || RETCODE == SQL_SUCCESS_WITH_INFO)
{
関数fprintf(うち、 "% - * sの%-5D%* s" は、NAME_LEN-1、szName、
sCustID、PHONE_LEN-1、szPhone)。
}
{
ブレーク;
}
}
}

おすすめ

転載: www.cnblogs.com/YZFHKMS-X/p/11779258.html