繁体   English   中英

如何创建可滚动的ResultSet?

[英]How to create a scrollable ResultSet?

我得到了这个简单的代码来从MSSQL Server 2008中检索记录集,由于我设置了ResultSet.TYPE_SCROLL_INSENSITVE,这与Javadocs中的示例相同,因此必须是可滚动的:

String qry = "SELECT * from tblPeople";
SQLConnection sql = new SQLConnection();
Statement stmt = sql.getConnection().createStatement(
                                        ResultSet.TYPE_SCROLL_INSENSITIVE,
                                        ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(qry);

不幸的是,当我想获得像rs.last(); int rowCount = rs.getRow();这样的行数时,我仍然得到了这个Stack Trace rs.last(); int rowCount = rs.getRow(); rs.last(); int rowCount = rs.getRow();

java.sql.SQLException: ResultSet may only be accessed in a forward direction.
    at net.sourceforge.jtds.jdbc.JtdsResultSet.checkScrollable(JtdsResultSet.java:304)
    at net.sourceforge.jtds.jdbc.JtdsResultSet.last(JtdsResultSet.java:551)
    at test.personen.Main.main(Main.java:44)

为什么这样,我怎么能修复它(顺便说一句,当我检查ResultSet的类型时,我得到1003 ..)?

很可能TYPE_SCROLL_INSENSITIVE的组合与CONCUR_UPDATABLE不兼容。 根据JDBC规范,如果ResultSet无法为请求的可滚动性和/或并发模式提供服务,则可以自由降级ResultSet 另见: http//jtds.sourceforge.net/resultSets.html

TYPE_SCROLL_INSENSITIVE | 静态游标| 重| 仅适用于只读并发(可更新可降级)。 SQL Server生成临时表,因此其他人所做的更改不可见。 滚动。

这确认了在指定CONCUR_UPDATABLE时驱动程序将降级。

您可能需要考虑使用TYPE_SCROLL_SENSITIVE或者根本不将可滚动性与可更新性相结合。

jTDS TYPE_SCROLL_INSENSITIVE仅支持只读操作。

将ResultSet.TYPE_SCROLL_INSENSITIVE更改为ResultSet.TYPE_SCROLL_SENSITIVE

http://www.anyang-window.com.cn/jtds-on-the-database-connection-resultset-is-read-only/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM