0

Java を使用して結果セットを作成する際に問題が発生しました。ここに行きます...

結果セットオブジェクトから取得した行ごとに整理されたコレクションオブジェクトを保存し、コレクションオブジェクト(ベクター/配列リストとして保存されている)をキャッシュに入れ、同じコレクションオブジェクトを取得しようとしています。ここでは、コレクション オブジェクトを使用して結果セットを再度構築する必要があります。今、私の疑問は、この方法で結果セットを構築することは可能かどうか? 至急お知らせください。

前もって感謝します、

バスカー

4

5 に答える 5

2

キャッシュの代わりにコレクションを使用する場合、ResultSet の代わりにCachedRowSetを使用することをお勧めします。CachedRowSet は ResultSet のサブインターフェースですが、データは既にキャッシュされています。これは、すべてのデータを ArrayList に書き込むよりもはるかに簡単です。
CachedRowSets 自体も照会できます。

CachedRowSet rs;
.......................
.......................
Integer id;
String name;

while (rs.next())
{               
     if (rs.getInt("id") == 13)
     {
          id   = rs.getInt("id");
          name = rs.getString("name")); 
     }              
}

したがって、情報が必要なときはいつでも CachedRowSet を呼び出すだけです。食パンとほぼ同じです。:)

編集:
Update メソッドはありますが、ResultSet には set メソッドはありません。ResultSet を再構築する目的で Update メソッドを使用する際の問題は、更新する行を選択する必要があることです。ResultSet が解放されると、すべての行が null に設定されます。null 参照を呼び出すことはできません。リストのリストは ResultSet 自体を模倣します。より正確には、配列の配列は ResultSet を模倣します。

ベクトルはスレッド セーフですが、大きなオーバーヘッドが伴います。代わりに ArrayList を使用してください。ネストされた各リストが作成され、外側のネストされたリストに配置されると、この方法で挿入されます。

nest.add(Collections.unmodifiableList(nested));

ネストされたリストがすべて挿入されたら、ネストされたリストを umodifiableList として返します。これにより、ベクトルのオーバーヘッドなしでスレッドセーフなコレクションが得られます。

于 2009-02-02T07:20:24.590 に答える
1

このページを見てください。SimpleResultSet クラスがニーズに合っているかどうかを確認してください。

そのソースをスタンドアロンのクラス セットに結合すると、うまくいくはずです。

于 2009-02-02T12:08:29.813 に答える
0

私が得ることができるものから、あなたのコードは次のようになるかもしれません:

List collection = new ArrayList();
collection.add(" A collection in some order");

List cache = new ArrayList();
cache.add(collection); ...

リストを使用したので、コレクションを取得すると、コレクションが順番に取得されると思います。

これがあなたが期待していたものでない場合は、コメントしてください。

于 2009-02-02T06:06:29.733 に答える
0

CachedRowSet を使用することをお勧めします。CachedRowSet の詳細については、http://www.onjava.com/pub/a/onjava/2004/06/23/cachedrowset.htmlこの記事 を参照してください。この CachedRowSet を作成したら、データベースから切断し、キャッシュされたデータに変更を加え、DB 接続を開いて変更をデータベースにコミットすることもできます。

于 2009-02-02T07:35:13.953 に答える
0

考慮すべきもう 1 つのオプションは、ResultSet の代わりに Collection を受け入れるようにコードをリファクタリングすることです。

その ResultSet を反復処理するメソッドに渡すと仮定しています。ArrayList を反復するようにメソッドを変更することもできます...

于 2009-02-02T07:37:33.573 に答える