2010/03/25

SQLServerException: 不支援在順向結果集上執行要求的作業

這幾天在做一個很簡單的範例
用JDBC連接Microsoft SQL Server 2005
try出一個例外
com.microsoft.sqlserver.jdbc.SQLServerException: 不支援在順向結果集上執行要求的作業。
但很奇怪的是連接MySQL都沒有這問題
connection取得已沒問題
此問題是由ResultSet定位時產生的
像是ResultSet.first()...之類的方法

從微軟的技術文件找到問題點
瞭解資料指標類型
資料指標定位
TYPE_FORWARD_ONLY、 TYPE_SS_DIRECT_FORWARD_ONLY 和 TYPE_SS_SERVER_CURSOR_FORWARD_ONLY 資料指標僅支援 next 定位方法。

TYPE_SS_SCROLL_DYNAMIC 資料指標不支援 absolute 和 getRow 方法。結合動態資料指標之 first 和 relative 方法的呼叫近似 absolute 方法。

只有 TYPE_FORWARD_ONLY、TYPE_SS_DIRECT_FORWARD_ONLY、 TYPE_SS_SERVER_CURSOR_FORWARD_ONLY、TYPE_SS_SCROLL_KEYSET 和 TYPE_SS_SCROLL_STATIC 資料指標支援 getRow 方法。具有全部順向資料指標類型的 getRow 方法會傳回目前透過資料指標讀取的資料列數目。

建立陳述式(statement)時
使用需要的TYPE
例(使用Statement):
Statement stmt = conn.createStatement(SQLServerResultSet.TYPE_SCROLL_SENSITIVE, SQLServerResultSet.CONCUR_READ_ONLY);
conn為已取得的Connection物件

此時覺得寫程式跑出中文的例外頗麻煩
線上資源比英文少很多

1 則留言: