반응형
JDBC-90609: Invalid column index 에러는 일반적으로 JDBC에서 SQL 질의를 실행할 때 지정된 열 인덱스가 잘못되었을 때 발생합니다. 이 오류는 주로 ResultSet, PreparedStatement, 또는 CallableStatement 객체에서 발생할 수 있습니다. 프로시저 실행 중에 이 오류가 발생하면, JDBC 코드에서 열 인덱스가 잘못 지정된 것입니다.
예시와 해결 방법
문제 예시
예를 들어, 다음과 같은 JDBC 코드가 있다고 가정해보겠습니다:
위 코드에서 registerOutParameter 메서드와 getString 메서드에 사용된 인덱스 3이 잘못되었습니다. 프로시저에 두 개의 파라미터만 있기 때문에 유효한 인덱스는 1과 2입니다.
해결 방법
인덱스가 잘못된 부분을 올바르게 수정해야 합니다. 다음과 같이 코드를 수정해보겠습니다:
이제 올바른 열 인덱스를 사용하여 오류를 해결했습니다.
구체적인 예시: 프로시저 실행
다음은 올바르게 작성된 JDBC 코드를 포함한 예시입니다.
데이터베이스 프로시저 예시
JDBC 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.sql.*;
public class JDBCExample {
public static void main(String[] args) {
String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:xe";
String username = "myusername";
String password = "mypassword";
try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) {
// 프로시저 호출 준비
CallableStatement stmt = connection.prepareCall("{call MY_PROCEDURE(?, ?)}");
stmt.setString(1, "World"); // 입력 파라미터 설정
stmt.registerOutParameter(2, Types.VARCHAR); // 출력 파라미터 설정
// 프로시저 실행
stmt.execute();
// 결과 가져오기
String result = stmt.getString(2);
System.out.println("Result: " + result);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
|
cs |
위 코드는 다음과 같은 작업을 수행합니다:
- 데이터베이스에 연결합니다.
- MY_PROCEDURE 프로시저를 호출합니다. 입력 파라미터와 출력 파라미터를 설정합니다.
- 프로시저를 실행하고 결과를 가져와서 출력합니다.
이렇게 올바른 열 인덱스를 사용하여 프로시저를 호출하고 결과를 처리할 수 있습니다. Invalid column index 오류를 방지하려면 항상 열 인덱스가 올바르게 지정되었는지 확인해야 합니다.
반응형