1

我正在运行 tomcat 并且有一些显示表格子集的 jsp 页面。我在单个页面上一次显示 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 查询中?

eg:对于第二页数据,20个元素的页面大小:

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

这将确保最多返回一页记录,从而消除大游标问题。

于 2008-12-03T19:15:55.540 回答