標籤:預存程序 get 執行預存程序 迭代 返回 als logs 退出 else
ResultSet內外移動
@author ixenos
內外移動指位置游標的移動
內移動就是一個ResultSet得到後的那個游標!
外移動就是多個ResultSet的迭代
內移動
一般的資料庫都不允許單個查詢提交多個SELECT語句,
1.execute執行SQL語句後,返回一個結果集ResultSet,
2.其中有個游標next在第一個元組之前(想象一下),調用hasNext就會判斷游標下一個元組存不存在
3.rs.next定位行(元組triple),rs.getXXX定位列(欄位field)
外移動
在執行預存程序中、或某些允許單個查詢提交多個SELECT語句的操作中,可能會返回多個結果集
1.使用execute方法執行SQL語句,將擷取第一個結果集或更新計數,
2.重複調用getMoreResults方法,將移動ResultSets的游標到下一個結果集,
3.當不存在更多的結果集或更新計數時,完成操作
4.stat.getResultSet定位當前結果集,stat.getUpdateStatement更新計數,stat.getMoreResults定位下一個結果集
boolean isResult = stat.execute(sql);Boolean done = false;while(!done){ if(isResult){ ResultSet result = stat.getResultSet(); 。。。 }else{ int updateCount = stat.getUpdateCount(); //isResult是false,但count!=-1,說明存在SQL操作但不返回結果集 if(updateCount >= 0){ 。。。 }else{ //count是-1時,說明getMoreResults沒有結果集了,也沒有別的SQL操作,此時退出 Done = true; } } if(!done) isResult = stat.getMoreResults();}
JavaEE JDBC ResultSet內外移動