오류 처리
SQL Server용 Microsoft JDBC Driver를 사용하면 모든 데이터베이스 오류 조건이 SQLServerException 클래스를 통해 Java 애플리케이션에 예외로 반환됩니다. 다음 SQLServerException 클래스의 메서드는 java.sql.SQLException 및 java.lang.Throwable에서 상속되며, 발생한 SQL Server 오류에 대한 특정 정보를 반환하는 데 사용됩니다.
getSQLState()
는 표준 X/Open 또는 SQL99 예외의 상태 코드를 반환합니다.getErrorCode()
는 특정 데이터베이스 오류 번호를 반환합니다.getMessage()
는 예외의 전체 텍스트를 반환합니다. 오류 메시지 텍스트에는 문제에 대한 설명이 나와 있으며, 표시될 때 오류 메시지에 삽입된 개체 이름 같은 정보에 대한 자리 표시자가 자주 포함되어 있습니다.getSQLServerError()
는 SQL Server에서 받은 예외에 대한 자세한 정보가 포함된SQLServerError
개체를 반환합니다. 서버 오류가 발생하지 않은 경우 이 메서드는 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 데이터베이스에 대해 열린 연결을 함수로 전달하고, FROM 절이 없는 잘못된 형식의 SQL 문을 생성합니다. 그런 다음 이 문을 실행하고 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 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기