如何在JDBC中设置Cursor类型?

时间:2008-12-03 13:59:49

标签: java oracle jdbc cursors

我正在运行tomcat并且有一些显示表的子集的jsp页面。我在一个页面上一次显示20行。当表具有大量数据时,jsp页面不会呈现。我猜测ResultSet正在使用客户端游标。我以前一直使用ASP,而且我们总是只使用服务器端向前游标,并且从不对大量数据有任何问题。我们的数据库是oracle 10g。

如何在JDBC中指定服务器端只进游标?

3 个答案:

答案 0 :(得分:3)

oracle驱动程序通过FetchSize属性实现服务器端游标。

不幸的是,JDBC没有明确允许设置客户端与服务器端游标,因此不同的驱动程序以不同的方式实现它。以下是其他有用的链接:

Fetch Size
Cursors
Oracle Driver

答案 1 :(得分:2)

Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY);
ResultSet rs = stmt.executeQuery(sql);

这应该设置它,但显然某些驱动程序会忽略它。

您总是可以尝试在ResultSet级别再次设置它。

rs.setFetchDirection(ResultSet.TYPE_FORWARD_ONLY);

希望有所帮助。

答案 2 :(得分:0)

还没有完全回答这个问题,但您是否考虑过在WHERE子句中使用ROWNUM或ROWNUMBER向SELECT查询明确添加分页?

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

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

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