복붙노트

[SQL] SQLSTATE 24000 - 잘못된 커서 상태

SQL

SQLSTATE 24000 - 잘못된 커서 상태

나는 DB2 데이터베이스에 연결하고 다음 쿼리를 만듭니다. "유효하지 않은 커서 상태"나는 오류가 난 왜 이해가 안 돼요.

public static void blivPar() {
            try {
                Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
                stmt.setMaxRows(1000);

                ResultSet drenge = stmt.executeQuery("SELECT * FROM People WHERE sex='M'");
                ResultSet piger = stmt.executeQuery("SELECT * FROM People WHERE sex='F'");
                drenge.first();
                piger.first();
                int i=0;
                while(drenge.next()) {
                    while(piger.next()) {
                        i++;
                        System.out.print(i);
                        stmt.execute("INSERT INTO Couples Values ('"+drenge.getString(1) +
                                "','" + drenge.getString(2) +
                                "','" + piger.getString(1) +
                                "','" + piger.getString(2) + "')");
                    }
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }

        }

감사합니다.

해결법

  1. ==============================

    1."정적 SQL 문을 실행 해, 작성된 결과를 돌려주기 위해서 (때문에) 사용 목적 : 한 Statement 인터페이스의 JDBC Javadoc과에 발견.

    "정적 SQL 문을 실행 해, 작성된 결과를 돌려주기 위해서 (때문에) 사용 목적 : 한 Statement 인터페이스의 JDBC Javadoc과에 발견.

    기본적으로, Statement 객체 당 하나의 ResultSet 객체가 동시에 오픈 할 수 있습니다. 하나 ResultSet 오브젝트의 판독은 서로의 판독과 인터리빙되는 경우, 각각은 다른 Statement 객체가 생성 한한다. 암시 적으로 가까운 Statement 인터페이스의 모든 실행 방법 한 Statment의 현재의 ResultSet 객체로 오픈되고있는 것이 존재하면,. " 문의 javadoc를 참조

    당신이 동시에 열이 개 결과 집합하려는 경우 두 개의 서로 다른 문을 필요로처럼 나에게 보인다 그래서. 또는 당신은 당신이 두 번째의 ResultSet을 생성하기 위해 문을 다시 사용할 수 있도록 첫 번째 ResultSet의 처리를 완료하고 닫습니다 필요가있다.

  2. from https://stackoverflow.com/questions/3727907/sqlstate-24000-invalid-cursor-state by cc-by-sa and MIT license