處理錯誤
使用 Microsoft JDBC Driver for SQL Server 時,所有資料庫錯誤狀況都會使用 SQLServerException 類別當作例外狀況傳回至您的 Java 應用程式。 SQLServerException 類別的下列方法均繼承自 java.sql.SQLException 和 java.lang.Throwable;它們可以用來傳回有關所發生之 SQL Server 錯誤的特定資訊:
getSQLState()
傳回例外狀況的標準 X/Open 或 SQL99 狀態碼。getErrorCode()
傳回特定的資料庫錯誤號碼。getMessage()
傳回例外狀況的全文。 錯誤訊息文字會描述問題,而且通常會包括預留位置,以用於顯示錯誤訊息時要插入其中的資訊,例如物件名稱。getSQLServerError()
傳回SQLServerError
物件,其中包含從 SQL Server 收到之例外狀況的詳細資訊。 如果未發生任何伺服器錯誤,則這個方法會傳回 null。
您可以使用 SQLServerError
類別的下列方法,來取得有關從伺服器產生之錯誤的其他詳細資料。
SQLServerError.getErrorMessage()
傳回從伺服器收到的錯誤訊息。SQLServerError.getErrorNumber()
傳回可識別錯誤類型的數字。SQLServerError.getErrorState()
從 SQL Server 傳回代表錯誤、警告或「找不到資料」訊息的數值錯誤碼。SQLServerError.getErrorSeverity()
傳回所收到錯誤的嚴重性層級。SQLServerError.getServerName()
傳回正在執行產生錯誤之 SQL Server 執行個體的電腦名稱。SQLServerError.getProcedureName()
傳回產生錯誤之預存程序或遠端程序呼叫 (RPC) 的名稱。SQLServerError.getLineNumber()
傳回產生錯誤之 Transact-SQL 命令批次或預存程序內的行號。
在下列範例中,SQL Server AdventureWorks2022 範例資料庫的開啟連線會傳入函式中,並建構一個格式錯誤的 SQL 陳述式 (其中不含 FROM 子句)。 然後,會執行此陳述式,並處理 SQL 例外狀況。
public static void executeSQLException(Connection con) {
try (Statement stmt = con.createStatement();) {
String SQL = "SELECT TOP 10 * Person.Contact";
ResultSet rs = stmt.executeQuery(SQL);
while (rs.next()) {
System.out.println(rs.getString("FirstName") + " " + rs.getString("LastName"));
}
}
catch (SQLException se) {
do {
System.out.println("SQL STATE: " + se.getSQLState());
System.out.println("ERROR CODE: " + se.getErrorCode());
System.out.println("MESSAGE: " + se.getMessage());
System.out.println();
}
while (se != null);
}
}
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應