java 控制檯老是報錯:Operation not allowed after ResultSet closed
阿新 • • 發佈:2018-11-11
百度了很多,都是說一個st對應一個rs,真是複雜!
怎麼改都報錯!!
總結一下自己的錯誤:
最常見的的是查詢操作,因為利用到rs結果集
while(rs.next){
list.add(rs.getString(1))
}
的時候,
勸各位不要放在工具包jdbcutils的方法裡面,
如果放在工具包jdbcutils的方法裡面,如下圖:
如上方法----操作結束就直接關閉了所有的資源,如果後面用的rs的結果集,就會報錯!!!
如果是刪除,修改,增加只要不涉及返回結果集的,用上面最合適!
但是
如果返回結果集,並且對結果集進行操作
可以這樣操作
因為查詢結束以後,需要把結果集放在List集合裡面;
新增結束以後;
再關閉資源,先關閉rs再關閉st最後關閉conn
最重要的是:
每次對資料庫進行不同的sql語句操作的時候
最好一個conn對應一個st對應一個rs
我的servlert用到兩次查詢,所以我用瞭如下設定
Connection conn=null; Connection conn1=null; ResultSet rs=null; ResultSet rs1=null; PreparedStatement st=null; PreparedStatement st1=null;
不要混淆;
免得報錯!
一般報錯是一個rs對應了兩個st,或者是1個st對應兩個rs,
我就是把st1寫成了st,導致一直報錯
我還覺得奇怪,我都分開了,怎麼還報錯???