簡體   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