2012-11-12 72 views
3

我得到這個簡單的代碼來檢索從MSSQL Server 2008的這必須是一個滾動記錄由於我設置的ResultSet.TYPE_SCROLL_INSENSITVE,與從的Javadoc的例子:如何創建可滾動的ResultSet?

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();

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 。)?

回答

3

最有可能的組合TYPE_SCROLL_INSENSITIVECONCUR_UPDATABLE不兼容。根據JDBC規範,如果驅動程序無法處理請求的可滾動性和/或併發模式,則它可以自由降級ResultSet。另請參閱:http://jtds.sourceforge.net/resultSets.html

TYPE_SCROLL_INSENSITIVE |靜態遊標|重| |僅適用於只讀併發(可更新降級)。 SQL Server生成一個臨時表,所以其他人所做的更改不可見。滾動。

確認驅動程序在指定CONCUR_UPDATABLE時將降級。

您可能需要考慮使用TYPE_SCROLL_SENSITIVE或者根本沒有將可滾動性和可更新性結合起來。

+0

太糟糕了它不可能有它可更新和可滾動的同時..但感謝,那將幫助! :) –

+0

它看起來像'TYPE_SCROLL_SENSITIVE'可能是可更新的。您還可以檢查Microsoft驅動程序是否提供此功能。 –

+0

看着http://msdn.microsoft.com/en-us/library/ms378709.aspx微軟驅動程序有相同的限制 –