今天在JSP頁(yè)面中,提交查詢后,結(jié)果集不能返回last(),
例如:java.sql.SQLException: 對(duì)只轉(zhuǎn)發(fā)結(jié)果集的無(wú)效操作;
原因是在Statement的屬性中缺少,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY
在百度上查了一下
分析: 異常出現(xiàn)于移動(dòng)結(jié)果集的指針時(shí),原因是在生成statement對(duì)象的時(shí)候提供的參數(shù)不同
無(wú)參數(shù)的那個(gè)方法使用的是默認(rèn)參數(shù),statement執(zhí)行后得到的結(jié)果集類型為 ResultSet.TYPE_FORWARD_ONLY.這種類型的結(jié)果集只能通過(guò)rs.next();方法逐條讀取,使用其他方法就會(huì)報(bào)異常. 如果想執(zhí)行一些復(fù)雜的移動(dòng)結(jié)果集指針的操作就要使用其他參數(shù)了
順便簡(jiǎn)單介紹一下各個(gè)參數(shù):
1. ResultSet.TYPE_FORWARD_ONLY (略)
2. ResultSet.TYPE_SCROLL_INSENSITIVE 雙向滾動(dòng),但不及時(shí)更新,就是如果數(shù)據(jù)庫(kù)里的數(shù)據(jù)修改過(guò),并不在ResultSet中反應(yīng)出來(lái)。
3. ResultSet.TYPE_SCROLL_SENSITIVE 雙向滾動(dòng),并及時(shí)跟蹤數(shù)據(jù)庫(kù)里的更新,以便更改ResultSet中的數(shù)據(jù)。
4. ResultSet.CONCUR_READ_ONLY 只讀取ResultSet
5. ResultSet.CONCUR_UPDATABLE 用ResultSet更新數(shù)據(jù)庫(kù)