SQLPrepare()
以下は、パラメーターをバインドする方法とその方法に関する便利なリンクです。パラメーターのバインドは、変数の内容を SQL 文字列に挿入する安全な方法であり、この方法で作成された準備済みステートメントは、ステートメントを複数回実行する効率的な方法でもあります。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms716365(v=vs.85).aspx
パラメーターを SQL クエリにバインドする例を示します。次の例を示します。
SQLPrepare(hstmt, "UPDATE Parts SET Price = ? WHERE PartID = ?", SQL_NTS);
SQL 文字列には、いくつか?
(疑問符) が表示されます。これらは、SQL 文字列のプレースホルダーのようなもので、"パラメーターをバインド" できます (つまり、代わりに変数の内容を代入できます)。
MSDN の例を続けるには...
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_FLOAT, SQL_REAL, 7, 0,
&Price, 0, &PriceInd);
SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_ULONG, SQL_INTEGER, 10, 0,
&PartID, 0, &PartIDInd);
最初のステートメントは最初の疑問符を変数の浮動小数点値にPrice
置き換え、2 番目のバインドは 2 番目の疑問符をPartID
変数の整数に置き換えます。
あなたの準備文はおそらく次のようになります...
SQLINTEGER iInd;
SQLUINTEGER i;
...
...
retcode = SQLPrepare(hstmt,(SQLCHAR *)"insert into dbo.vivtest values(?)",SQL_NTS);
...
...
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_ULONG, SQL_INTEGER, 10, 0,
&i, 0, &iInd);