處理錯誤

下載 JDBC 驅動程式

使用 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);
    }
}

另請參閱

診斷 JDBC 驅動程式的問題