2009-06-12 15 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上で試してみた​​コール

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用のJava 5.0 & 6.0上で動作するようにそれを得たが、私のAS400JDBCDriverための唯一の6.0 - 上から方法2を両方使用します。いずれにしてもかなり遅くなっているようです。

答えて

0

ドライバーがJDBC 3.0に準拠していない可能性があります。これは、行セットがAPIに導入されたときです。 AbstractMethodErrorはこれをサポートしています。

ドライバのマニュアルを参照して、サポートするJDBCバージョンを確認してください。

+0

で動作します。また、6.0 JREと同じドライバで動作させることもできました。しかし、ありがとう:) –

-2

ドライバの呼び出し方法は、新しいバージョンのJavaで変更されています。古い学校は、余分なボイラープレートを持っていましたが、それはまだドライバを含むjarファイルがクラスAS400JDBCRowSetを持っているので、私は、これは問題ではありません想像するJava 6

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

答えをありがとうが、私はDriverManager javadocs(jdbc.driversシステムプロパティを設定する)からドライバ名を設定する方法を使用してみました。違いはありません - AS400ドライバーで同じエラーが発生しました:( –

+0

ここであなたが何を言っているのか不明です。JDBC4,2007で 'Class.forName()'行が不要になりました。 – EJP

関連する問題