2009-06-12 5 views
0

CachedRowSet을 사용하여 데이터베이스 쿼리를 결과가 포함 된 AS400JDBCResultSet 페이지로 데이터베이스 페이징 솔루션을 구현하려고합니다.CachedRowSet은 모든 ResultSet 구현에서 작동합니까?

(즉 cachedRowSet.next()를 호출하여) 나는

CachedRowSet cachedRowSet = new CachedRowSetImpl(); 
cachedRowSet.setMaxRows(10); 
cachedRowSet.setPageSize(10); 
cachedRowSet.populate(resultSet); 

접근 방식을 사용하여 시도했지만, 전체 결과 세트 (65 개 기록) 첫 페이지에 반환됩니다. 나는 또한

CachedRowSet cachedRowSet = new CachedRowSetImpl(); 
cachedRowSet.setPageSize(10); 
cachedRowSet.setMaxRows(0); 
cachedRowSet.setUsername("username"); 
cachedRowSet.setPassword("password"); 
cachedRowSet.setUrl("jdbc:as400://dev;naming=system;libraries=*LIBL;prompt=false;"); 
cachedRowSet.setCommand(query); 
cachedRowSet.execute(connection); 

접근 방식을 시도했습니다,하지만 난 모두 IBM & 썬의 JRE에 시도한 execute() 전화

Exception in thread "main" java.lang.AbstractMethodError: java/sql/DatabaseMetaData.locatorsUpdateCopy()Z 
    at com.sun.rowset.CachedRowSetImpl.initMetaData(CachedRowSetImpl.java:712) 
    at com.sun.rowset.CachedRowSetImpl.populate(CachedRowSetImpl.java:617) 
    at com.sun.rowset.internal.CachedRowSetReader.readData(CachedRowSetReader.java:190) 
    at com.sun.rowset.CachedRowSetImpl.execute(CachedRowSetImpl.java:756) 

에 던져 다음과 같은 예외를 얻을.

아이디어가 있으십니까? 이 기능은 JDBC 드라이버가 지원하지 않는가?

업데이트 : 또한 MySQL 드라이버에서 발생합니다. 그래서 다른 잘못된 작업을해야합니다. 맞습니까?

업데이트 (2) : 유무는 MySQL의의 Driver 자바 5.0 & 6.0에서 작동하는 그것을 가지고,하지만 내 AS400JDBCDriver 만에 6.0 - 위의 방법 2를 모두 사용. 어쨌든 아주 느린 것 같습니다.

답변

0

드라이버에 JDBC 3.0 규격이 아닌 것처럼 들리 겠지만, 행 세트가 API에 도입되었을 때입니다. AbstractMethodError는 이것을 지원합니다.

지원할 JDBC 버전을 확인하려면 드라이버 설명서를 확인하십시오.

+0

와 함께 작동, 그래서 이것이 문제가되지 않습니다 상상 것입니다. 또한 6.0 JRE 및 동일한 드라이버로 작업 할 수있었습니다. 고마워요 :) –

-2

드라이버가 호출되는 방식이 최신 버전의 Java로 변경되었습니다. 오래된 학교는 별도의 보일러 플레이트를했지만, 여전히 자바 6. 드라이버가 들어있는 항아리가 클래스 AS400JDBCRowSet을 가지고

Connection c = null; 
try { 
     Class.forName(driverString); 
    } catch (ClassNotFoundException e) { 
     //TODO 
    } 
c = DriverManager.getConnection(url, username, password); 
+0

답변 주셔서 감사합니다,하지만 DriverManager javadocs (jdbc.drivers 시스템 속성 설정)에서 드라이버 이름을 설정하는 방법을 사용하여 시도했습니다. 차이점은 없습니다 - AS400 드라이버에서 같은 오류가 발생했습니다 : ( –

+0

여기서 말하는 내용이 명확하지 않습니다. JDBC 4, 2007에서'Class.forName()'줄이 불필요하게되었습니다. – EJP