Я пытаюсь реализовать решение для подкачки базы данных (требуется только пересылка), используя 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): Заставили его работать на Java 5.0 и 6.0 для MySql Driver
, но только на 6.0 для моего AS400JDBCDriver
- оба с использованием метода 2, описанного выше. Кажется, в любом случае довольно медленно.