1
我想在使用ODBC的程序中設置一些有用的錯誤處理。根據文檔如果SQLExecDirect返回SQL_ERROR我應該能夠調用SQLGetDiagRec來獲取SQL_STATE和可能的一些消息,但在我的測試中,當我從SQLExecDirect獲取錯誤後立即調用SQLGetDiagRec時,我得到SQL_NO_DATA返回並且沒有任何信息。SQLExecDirect失敗,但SQLGetDiagRec沒有數據
代碼:
result = SQLExecDirect(hstmt, <SQL Statement>, SQL_NTS);
if(result == SQL_ERROR)
{
SQLSMALLINT msg_len = 0;
SQLCHAR sql_state[6], message[256];
SQLINTEGER native_error = 0;
result = SQLGetDiagRec(SQL_HANDLE_DBC, hDbc, 1, sql_state, &native_error, message, countof(message), &msg_len);
// Here 'result' is SQL_NO_DATA
....
}
它可以在其他情況下,只是不適合SQLExecDirect的某種原因。我也意識到應該循環訪問SQLGetDiagRec結果,但如果第一個返回SQL_NO_DATA,根據文檔它意味着沒有更多的結果。
我正在測試它的具體錯誤是請求一個不存在的表。
爲了獲取至少一個錯誤代碼,還是需要做其他事情,或者診斷不適用於由不正確的SQL請求導致的錯誤?
你有沒有想過這件事?我看到同樣的事情。 – DougN