パラメータ化されたステートメント
次のコード例は、パラメータをバインドしてパラメータ化されたステートメントを作成する方法を示します。
パラメータのバインド
SQLBindParameter 関数を使用して、指定されたパラメータ位置を指定された変数にバインドします。パラメータのオーダーは1から始まることに注意してください。
例
次の例は、パラメータ化されたSELECT を実行し、結果を反復処理します。SQLExecDirect を使って、任意のパラメータ化されたステートメントを実行することができます。
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
char sFilesize[30] = {0};
SQLLEN cbsFilesize = 0;
char param[30] = {0};
strcpy(param, "doc.txt");
SQLLEN cbParam = SQL_NTS;
if (SQLAllocHandle(SQL_HANDLE_ENV, 0 ,&henv) == SQL_SUCCESS) {
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
if (SQLAllocHandle(SQL_HANDLE_DBC, henv ,&hdbc) == SQL_SUCCESS) {
if (SQLConnect(hdbc, "CData FTP Source", SQL_NTS, 0, 0, 0, 0) == SQL_SUCCESS) {
if (SQLAllocHandle(SQL_HANDLE_STMT, hdbc ,&hstmt) == SQL_SUCCESS) {
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 100, 0, (SQLPOINTER)param, 30, &cbParam);
if (SQLExecDirect(hstmt, "SELECT Filesize FROM Notes WHERE FilePath = ?", SQL_NTS) == SQL_SUCCESS) {
while(SQLFetch(hstmt) == SQL_SUCCESS) {
if (SQLGetData(hstmt, 1, SQL_C_CHAR, (SQLPOINTER)sFilesize, 255, &cbsFilesize) == SQL_SUCCESS) {
printf("Filesize: %s\n", sFilesize);
}
}
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
SQLDisconnect(hdbc);
}
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
}
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}