J'essaye de mettre en application une solution de pagination de base de données (vers l'avant seulement exigée) en utilisant un CachedRowSet
pour paginer un AS400JDBCResultSet
contenant les résultats de ma question.Est-ce que CachedRowSet fonctionne avec toutes les implémentations ResultSet?
J'ai essayé d'utiliser l'approche
CachedRowSet cachedRowSet = new CachedRowSetImpl();
cachedRowSet.setMaxRows(10);
cachedRowSet.setPageSize(10);
cachedRowSet.populate(resultSet);
, mais l'ensemble des résultats (65 dossiers) est retourné dans la première page (par exemple en appelant cachedRowSet.next()
). J'ai aussi essayé le
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);
approche
, mais je reçois l'exception suivante jeté sur le execute()
appel
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)
J'ai essayé sur les deux IBM & Sun JRE.
Des idées? Est-ce que cette fonctionnalité n'est pas supportée par mon pilote JDBC?
Mise à jour: Également se produit avec le pilote MySQL - donc je dois faire quelque chose d'autre faux, non?
Mise à jour (2): ont obtenu à travailler sur Java 5.0 & 6.0 pour Driver
de MySql, mais seulement 6,0 pour mon AS400JDBCDriver
- à la fois en utilisant la méthode 2 d'en haut. Semble être assez lent dans tous les cas.
Le pot contenant le pilote a une AS400JDBCRowSet de classe, donc j'imagine que ce n'est pas le problème. En outre, nous avons réussi à le faire fonctionner avec un JRE 6.0 et le même pilote. Merci cependant :) –