○ODBC 結果セットの変数へのバインド
■結果セットの値を文字列に変換して表示
数字や通貨型や日付などの値も文字列に変換されて出力されます。
//アプリケーション変数への列のバインド(変数に関連付け)
unsigned char str[1024];//フィールド最大サイズに合わせて変更してください
SQLBindCol(hstmt, 1, SQL_C_CHAR, &str, (SDWORD)sizeof(str),NULL);//カラムの1列目にバインドする
while(1){
RETCODE rc = SQLFetch(hstmt);
if( rc == SQL_NO_DATA_FOUND )
break;
if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO ) {
printf("ERR\n");
break;
}
printf( "%s\n",str);//1列目の値を表示
}
■結果セットの値を変数に直接入れる
ターゲットのデータ型により丸め誤差が出ます
INT型
DWORD intval;
SQLBindCol(hstmt, 1, SQL_C_SLONG, &intval, 0, NULL);//カラムの1列目にバインドする
SMALLINT型
short sintval;
SQLBindCol(hstmt, 1, SQL_C_SSHORT, &sintval, 0, NULL);//カラムの1列目にバインドする
DECIMAL型
long double val;
SQLBindCol(hstmt, 1, SQL_C_DOUBLE, &val, 0, NULL);//カラムの1列目にバインドする
REAL型
double val;
SQLBindCol(hstmt, 1, SQL_C_DOUBLE, &val, 0, NULL);//カラムの1列目にバインドする
MONEY型
小数点以下に丸め誤差が出る
long double val;
SQLBindCol(hstmt, 1, SQL_C_DOUBLE, &val, 0, NULL);//カラムの1列目にバインドする
SMALLMONEY型
double val;
SQLBindCol(hstmt, 1, SQL_C_DOUBLE, &val, 0, NULL);//カラムの1列目にバインドする
▼TargetType
SQL_C_CHAR 文字列
SQL_C_DOUBLE 浮動小数点型
SQL_C_FLOAT 浮動小数点型
SQL_C_LONG 32bit整数
SQL_C_SHORT 16bit整数
SQL_C_TYPE_DATE 日、月、年
SQL_C_TYPE_TIME 時、分、秒
SQL_C_TYPE_TIMESTAMP ミリ秒、時、分、秒、日、月、年
▲トップページ
>
Windows と C++