【发布时间】:2009-06-12 08:56:15
【问题描述】:
我正在尝试使用CachedRowSet 来实现一个数据库分页解决方案(只需要转发)来分页包含我的查询结果的AS400JDBCResultSet。
我尝试过使用
CachedRowSet cachedRowSet = new CachedRowSetImpl();
cachedRowSet.setMaxRows(10);
cachedRowSet.setPageSize(10);
cachedRowSet.populate(resultSet);
方法,但在第一页返回完整的结果集(65 条记录)(即通过调用 cachedRowSet.next())。我也试过了
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);
方法,但我在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)
我在 IBM 和 Sun JRE 上都试过了。
有什么想法吗?我的 JDBC 驱动程序是否完全不支持此功能?
更新: MySQL 驱动程序也会发生 - 所以我一定是做错了什么,对吧?
更新 (2): 已经让它适用于 MySql 的 Driver 的 Java 5.0 和 6.0,但仅适用于我的 AS400JDBCDriver 的 6.0 - 两者都使用上面的方法 2。在任何情况下似乎都很慢。
【问题讨论】:
标签: java jdbc cachedrowset