JDBC中如何设置Cursor类型?
我正在运行 tomcat 并有一些显示表子集的 jsp 页面。 我在一个页面上一次显示 20 行。 当表数据量较大时,jsp页面无法渲染。 我猜测 ResultSet 使用的是客户端游标。 我过去使用过 ASP,并且我们总是使用服务器端仅向前游标,并且在处理大量数据时从未遇到过任何问题。 我们的数据库是oracle 10g。
如何在 JDBC 中指定服务器端只进游标?
I'm running tomcat and have some jsp pages that display a subset of a table. I show 20 rows at a time on a single page. When the table has large amounts of data, the jsp page doesn't render. I'm guessing that the ResultSet is using a client side cursor. I've worked with ASP in the past, and we always used server side forward only cursors, and never had any problems with large amounts of data. Our database is oracle 10g.
How can I specify a server-side forward-only cursor in JDBC?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
oracle 驱动程序通过 FetchSize 属性实现服务器端游标。
不幸的是,JDBC 并没有明确允许设置客户端与服务器端游标,因此不同的驱动程序以不同的方式实现它。 以下是其他有帮助的链接:
获取大小
游标
Oracle 驱动程序
The oracle driver implements server-side cursors via the FetchSize property.
Unfortunately, JDBC doesn't explicitly allow for setting client vs server-side cursors, so different drivers implement it in different ways. Here are the other links that helped:
Fetch Size
Cursors
Oracle Driver
这应该设置它,但显然一些驱动程序会忽略它。
您始终可以尝试在结果集级别再次设置它。
希望有帮助。
This should set it but apparently some drivers ignore it.
You could always try and set it again at ResultSet level.
Hope that helps.
没有完全回答这个问题,但是您是否考虑过在 WHERE 子句中使用 ROWNUM 或 ROWNUMBER 显式地将分页添加到 SELECT 查询中?
例如:对于第二页数据,20 个元素页面大小:
这将确保最多返回一页记录,从而消除大游标问题。
Not quite answering the question, but have you considered explicitly adding paging to your SELECT query using ROWNUM or ROWNUMBER in your WHERE clause?
eg: for the second page of data, 20 element page size:
This would ensure that at most one page of records are returned, removing the large cursor issue.