[英]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.