0
我試圖在數據庫中插入o blob。我已成功輸入兩列數據。ODBC SQLParamData返回數據
我有絲毫的問題。它SQLParamData返回一個錯誤時,它應該返回SQL_NEED_DATA(我會發布的代碼)
當我運行SQLGetDiagRec的返回S1010錯誤文本函數序列錯誤。 我在互聯網上搜索這個錯誤,我知道它可能與來自SQLBindParameter的參數有關。
// Bind the parameter marker.
retCode = retcode = SQLBindParameter(hstmt, // hstmt
1, // ipar
SQL_PARAM_INPUT, // fParamType
SQL_C_BINARY, // fCType
SQL_LONGVARBINARY, // FSqlType
lbytes, // cbColDef
0, // ibScale
&pParmID, // rgbValue
0, // cbValueMax
&cbTextSize); // pcbValue
SqlError(hstmt,SQL_HANDLE_STMT,_T("WriteBlob"), _T("CTLSqlConnection"), _T("SQLBindParameter"));
if(retCode != SQL_SUCCESS)
{
delete pData;
if(!EndTransaction(FALSE))
return ERR_ENDTRANSACTION_FAILED;
else
return -3;
}
//SQLExec
retcode = retCode = SQLExecDirect(hstmt,(SQLTCHAR*)szSqlStat, SQL_NTS);
SQLRETURN ret;
SQLCHAR* SQLState;
SQLINTEGER NativeError;
SQLSMALLINT errmsglen;
SQLCHAR errmsg[255];
SQLCHAR errstate[50];
retCode = SQLParamData(hstmt, &pParmID);
SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, 1, (SQLCHAR*)errstate, &NativeError, (SQLCHAR*)errmsg, sizeof(errmsg), &errmsglen);
if(retCode == SQL_NEED_DATA)
{
// Put final batch.
SQLPutData(hstmt, pData, lbytes);
}
else
{
delete pData;
如果這部分代碼不夠用,我會發布更多。
希望你能幫助我。謝謝。
謝謝。如果你能給我一個例子,這將是非常有益的。再次感謝。 –
http://cpansearch.perl.org/src/MJEVANS/DBD-ODBC-1.40_2/dbdimp.c搜索SQL_ParamData。它基本上調用SQLExecute或SQLExecDirect,並且如果返回SQL_NEED_DATA,它將調用SQLParamData來查找哪個綁定參數是必需的,然後調用SQLPutData來發送參數。 – bohica