我正在使用Microsoft JDBC驅動程序(mssqlserver.jar)從我的SQL Server數據庫檢索一個簡單的ResultSet。我認爲這是從[微軟JDBC]下載MSSQL2000驅動程序[1]JDBC在結果集中重新讀取數據
我想調用getter方法不止一次訪問值,但是當你做下面的異常被拋出:
java.sql.SQLException
:[微軟] [SQLServer 2000的爲JDBC驅動程序]ResultSet
不能重新讀取行數據作爲第1列
的問題是,我檢索數據到一個結果。從ResultSet中,我在將ResultSet傳遞到代碼中的其他地方以便重用之前訪問我的代碼中的數據。
代碼類似於如下:
// build query string
String selectQuery = "SELECT * FROM SomeWhere";
// get the data
Statement statement = sourceConnection.createStatement();
ResultSet rs = statement.executeQuery(selectQuery);
while(rs.next()) {
// do my own internal processing
doSomethingWithRs(rs);
// now do something with the record set outside - in subclass
afterRowCopied(rs);
}
// ...
private void doSomethingWithRs(ResultSet rs) {
// access data
for(int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
Object o = rs.getObject(i);
// do something with o...
}
}
編輯
我使用Java 1.6的這一點。
末編輯
有什麼想法? 我所能想到的就是用ResultSetMetaData重新打包數據到自定義類中。
在這個問題上沒有發現太多帖子。微軟網站根本沒有任何幫助。
是否有可能。你可以使用jtds代替http://jtds.sourceforge.net/ – 2012-02-07 12:49:29
sandeepnair85,這個東西可以展望未來 - 當然。但由於所有事情都是以數據庫爲導向的,所以不能改變,因爲管理層不會100%置信地替換,這會導致很多測試。將爲你的答案+1,但你必須已經刪除,然後再對 – Andez 2012-02-07 14:15:51