○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++