Operation not allowed for a result set of type ResultSet.TYPE_FORWARD_ONLY.
위와 같은 오류가 발생했다.
Statement stmt = null;
ResultSet rs = null;
StringBuffer sb = null;
try{
stmt = dbconn.create();
sb = new StringBuffer();
sb.append("SELECT * FROM TABLE\n");
System.out.println(sb.toString());
rs = stmt.executeQuery(sb.toString());
rs.last();
String[][] result = new String[rs.getRow()][6];
rs.beforeFirst();
}
위의 코드 13LINE에서 오류가 발생했다.
구글링을 하니 자바의 JDBC 클래스에서 ResultSet 객체를 통해 쿼리의 결과를 가져오다 난 오류이다.
위의 코드를 짧게 설명하자면 쿼리의 Row 갯수를 이용해 2차원 배열을 만드는 코드인데 예민한 부분은 생략했다.
해결방안은 'stmt = dbconn.create();' 이 부분을 수정해주면 된다.
난 아래와 같이 수정을 해주었다.
public Statement createScrollStatement() throws SQLException {
return conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
}
...
Statement stmt = null;
ResultSet rs = null;
StringBuffer sb = null;
try{
stmt = dbconn.createScrollStatement();
sb = new StringBuffer();
sb.append("SELECT * FROM TABLE\n");
System.out.println(sb.toString());
rs = stmt.executeQuery(sb.toString());
rs.last();
String[][] result = new String[rs.getRow()][6];
rs.beforeFirst();
}
ResultSet.TYPE_SCROLL_INSENSITIVE : 양방향 이동은 가능하지만 데이터의 변경이 바로 적용되지 않는다.
ResultSet.CONCUR_READ_ONLY : 데이터를 읽을 수만 있다.
배운것 : 'ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE'는 Operation not allowed for a result set of type ResultSet.TYPE_FORWARD_ONLY. 같은 에러를 방지하기 위해 필수로 넘겨주어야 할 파라미터이다.
'Java > error.zip' 카테고리의 다른 글
이클립스 .Project 관련 오류 (0) | 2021.06.03 |
---|---|
[TOMCAT] 프로젝트 실행중 오류_사이트에 연결할 수 없음 (0) | 2021.05.04 |
[TOMCAT] 프로젝트 실행중 오류 (2) | 2021.05.03 |