我正在运行tomcat并且有一些显示表的子集的jsp页面。我在一个页面上一次显示20行。当表具有大量数据时,jsp页面不会呈现。我猜测ResultSet正在使用客户端游标。我以前一直使用ASP,而且我们总是只使用服务器端向前游标,并且从不对大量数据有任何问题。我们的数据库是oracle 10g。
如何在JDBC中指定服务器端只进游标?
答案 0 :(得分:3)
oracle驱动程序通过FetchSize属性实现服务器端游标。
不幸的是,JDBC没有明确允许设置客户端与服务器端游标,因此不同的驱动程序以不同的方式实现它。以下是其他有用的链接:
答案 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
这将确保返回最多一页记录,从而消除大型游标问题。