반응형
rs.last()가 전달 전용 결과 집합에 대해 잘못된 작업을 제공함: last
다음과 같이 설정된 결과의 행 수를 가져오려고 합니다.
rs.last();
int row_count = rs.getRow();
하지만 나는.Invalid operation for forward only resultset : last오류. 결과 집합이 Oracle 10g 데이터베이스에서 데이터를 가져오는 중입니다.
연결을 설정하는 방법은 다음과 같습니다.
Class.forName("oracle.jdbc.driver.OracleDriver");
String connectionString = "jdbc:oracle:thin:@" + oracle_ip_address + ":" + oracle_db_port + ":" + oracle_db_sid;
Connection conn = DriverManager.getConnection(connectionString, oracle_db_username, oracle_db_password);
ResultSet.last()및 기타 "절대적으로 정렬된" 쿼리 작업은 결과 집합을 스크롤할 수 있는 경우에만 사용할 수 있습니다. 그렇지 않으면 전달 전용 결과 집합을 통해 하나씩만 반복할 수 있습니다.
다음 예제(javadocs에서)는 스크롤 가능한 파일을 만드는 방법을 보여줍니다.ResultSet.
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY
);
ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
스크롤 가능한 쿼리를 사용하면 성능에 영향을 미칩니다.이 특별한 목적이 있다면,ResultSet마지막 값을 가져오는 것입니다. 쿼리를 수정하여 해당 결과만 반환하십시오.
PreparedStatement ps = conn.prepareStatement ("SELECT * FROM
EMPLOYEE_TABLE WHERE LASTNAME = ?" ,
ResultSet.TYPE_SCROLL_INSENSITIVE ,
ResultSet.CONCUR_UPDATABLE ,
ResultSet.HOLD_CURSOR_OVER_COMMIT) ;
준비된 문의 경우 최소한 다음에 대한 유형과 동시 모드를 모두 지정해야 합니다.last()그리고.isLast()일하기 위해.
String rowCount = "SELECT COUNT(*) as numberOfRows FROM (SELECT * FROM names)";
Statement stat = con.createStatement();
ResultSet rs = stat.executeQuery(rowCount);
int lastRow = rs.getInt("numberOfRows");
System.out.println(lastRow);
대신에SELECT * FROM names쿼리를 사용합니다.
언급URL : https://stackoverflow.com/questions/9007051/rs-last-gives-invalid-operation-for-forward-only-resultset-last
반응형
'programing' 카테고리의 다른 글
| 오라클 SQL 개발자에서 clob 필드 데이터를 내보내는 방법 (0) | 2023.06.13 |
|---|---|
| 사용자 지정 구성 요소 | 초기화 전에 '스토어'에 액세스할 수 없습니다. (0) | 2023.06.13 |
| dplyr을 사용한 상대 빈도/비율 (0) | 2023.06.13 |
| 업로드된 php 파일을 워드프레스로 실행하는 대신 일반 텍스트로 표시하는 방법은 무엇입니까? (0) | 2023.06.13 |
| ASP.NET 응용 프로그램이 로컬에서 실행 중인지 확인 (0) | 2023.06.13 |