問題描述:
使用Connection郭厌、Statement/PreparedStatement携茂、ResultSet來取數(shù)據(jù)庫信息:
.........
ResultSet rs = stmt.executeQuery();
String str1 = rs.getString(field1);
......
String str2 = rs.getString(field2);
.........
當執(zhí)行到String str2 = rs.getString(field2);時拋出異常:java.sql.SQLException: 流已被關(guān)閉
檢查程序代碼你踩,缺未發(fā)現(xiàn)有什么異常的地方,那么到底是什么原因造成的呢邑蒋?
出錯原因及解決方法:
仔細查看java api文檔姓蜂,在ResultSet類的最上面有一段文字:
默認的 ResultSet 對象不可更新,僅有一個向前移動的指針医吊。因此钱慢,只能迭代它一次,并且只能按從第一行到最后一行的順序進行卿堂。
就是說ResultSet只能向前移動(rs.next())束莫,而且只能按所取的記錄的列的順序來讀取懒棉,所以這里:
String str1 = rs.getString(field1);
String str2 = rs.getString(field2);
如果所取的記錄里字段field2在field1之前,而讀取的時候讀field2在讀field1之后览绿,那么就會拋出上述異常2哐稀!