ODBC錯誤處理


ODBC 中的錯誤處理

ODBC 中的錯誤是使用來自每個 ODBC 函數調用的返回值和 SQLError 函數或 SQLGetDiagRec 函數的返回值進行報告的。SQLError 函數用於 ODBC 版本 3 之前的版本(但不包括版本 3)。自版本 3 起,已不建議使用 SQLError 函數,此函數已被 SQLGetDiagRec 函數取代。

每個 ODBC 函數都返回一個 SQLRETURN,它是以下狀態代碼之一:

狀態代碼 說明
SQL_SUCCESS 無錯誤。
SQL_SUCCESS_WITH_INFO

該函數完成,但是對 SQLError 的調用將顯示警告。

這種狀態最常見的情況是:返回的值太長,應用程序提供的緩沖區不夠用。

SQL_ERROR 函數未完成,因為出現了錯誤。調用 SQLError 可獲取有關此問題的詳細信息。
SQL_INVALID_HANDLE

作為參數傳遞的環境、連接或語句句柄無效。

如果在釋放句柄后再使用該句柄,或者句柄為空值指針,則通常會發生這種情況。

SQL_NO_DATA_FOUND

沒有可用信息。

使用這種狀態的最常見情況是在從游標進行讀取時,這種狀態表示游標中沒有更多行。

SQL_NEED_DATA

參數需要數據。

這是一項高級特性,SQLParamData 和 SQLPutData 下面的 ODBC SDK 文檔對其作了說明。

每個環境、連接和語句句柄都可能有與之相關聯的一個或多個錯誤或警告。每個對 SQLError 或 SQLGetDiagRec 的調用都會返回有關一個錯誤的信息,然后刪除有關該錯誤的信息。如果您不調用 SQLError 或 SQLGetDiagRec 來刪除所有錯誤,則會在執行下一個將同一句柄作為參數來傳遞的函數調用時,刪除這些錯誤。

每個對 SQLError 的調用都會傳遞三個句柄,這些句柄分別用於環境、連接和語句。第一個調用使用 SQL_NULL_HSTMT 獲取與連接相關聯的錯誤。同樣,使用 SQL_NULL_DBC 和 SQL_NULL_HSTMT 的調用將獲取任何與環境句柄相關聯的錯誤。

每個對 SQLGetDiagRec 的調用將傳遞環境、連接或語句句柄。第一個調用傳遞句柄類型 SQL_HANDLE_DBC 以獲取與連接關聯的錯誤。第二個調用傳遞句柄類型 SQL_HANDLE_STMT,以獲取與剛執行的語句相關聯的錯誤。

如果有要報告的錯誤(不是 SQL_ERROR),SQLError 和 SQLGetDiagRec 將返回 SQL_SUCCESS;如果沒有其它要報告的錯誤,則將返回 SQL_NO_DATA_FOUND。

 示例 1
 示例 2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM