1

Tomcat を実行していて、テーブルのサブセットを表示する JSP ページがいくつかあります。1 ページに一度に 20 行を表示します。テーブルに大量のデータがある場合、jsp ページはレンダリングされません。ResultSet はクライアント側のカーソルを使用していると思います。私は過去に ASP で作業したことがあり、常にサーバー側の前方カーソルのみを使用しており、大量のデータで問題が発生したことはありません。データベースは oracle 10g です。

JDBC でサーバー側の前方専用カーソルを指定するにはどうすればよいですか?

4

3 に答える 3

3

Oracle ドライバは、FetchSize プロパティを介してサーバー側カーソルを実装します。

残念ながら、JDBC ではクライアント側カーソルとサーバー側カーソルの設定が明示的に許可されていないため、ドライバーによって実装方法が異なります。助けになった他のリンクは次のとおりです。

フェッチ サイズ
カーソル
Oracle ドライバ

于 2008-12-03T14:29:21.577 に答える
2
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY);
ResultSet rs = stmt.executeQuery(sql);

これで設定されるはずですが、一部のドライバーはそれを無視しているようです。

ResultSet レベルでいつでも再設定を試みることができます。

rs.setFetchDirection(ResultSet.TYPE_FORWARD_ONLY);

それが役立つことを願っています。

于 2008-12-03T14:08:53.990 に答える
0

質問に完全には答えていませんが、WHERE 句で ROWNUM または ROWNUMBER を使用して、SELECT クエリにページングを明示的に追加することを検討しましたか?

例: データの 2 ページ目、20 要素のページ サイズ:

SELECT * 
  FROM MyDataObjects
  WHERE rownum > 20 AND rownum < 41

これにより、最大で 1 ページのレコードが返されるようになり、大きなカーソルの問題が解消されます。

于 2008-12-03T19:15:55.540 に答える