JDBC中的ResultSet無法多次循環的問題。


  前幾天碰見了一個很奇葩的問題,使我百思不得其解,今天就寫一下我遇見的問題吧,也供大家參考,別和我犯同樣的毛病。

  首先說下jdbc,jdbc是java是一種用於執行SQL語句的Java API,從jdbc中取值我們一般都是Statement stmt 的next()方法,或者是PreStatement  的next()方法,

  next()方法用來判斷下一條記錄是否存在,如果存在就執行一次,游標就向后移動。最開始的時候,游標位於第一條記錄之前,也就是說執行一次后,游標移動到第一條記錄的位置,隨着循環調用依次后移,移動到最后一條記錄之后時結束。

  如果,結果集中只存在一條記錄,那么執行一次后,游標移動到該條記錄位置。當再次調用next()方法時,游標就會移動到該條記錄之后,那么執行就會結束。

  if(rs.next())這個方法只會執行一次,判斷ResultSet結果集中是否存在數據,如果存在就會執行,然后跳出,如果想要循環多次就需要使用while(rs.next()),這樣的話游標就會一直向下移動,直到移動到數據的末尾跳出循環。

  可是我在循環數據的時候用的就是while(rs.next()) 還是跳出了循環,我在Eclipse中打了斷點許多次也沒有發現問題的所在,最后在瘋狂的查找資料的時候,終於找到了問題的所在,就是如果我們在寫jdbc的時候,如果需要對數據進行多次循環,需要嵌套多個ResultSet使用的話,我們不能再一個ResultSet循環中再次的嵌套ResultSet,這樣的話,游標就會變更到另一個Result中,然后就跳出了循環,我的解決辦法是,可以將需要嵌套的ResultSet我們先查詢出來數據,然后,我們使用一個List集合add()進去,我們在另一個ResultSet中遍歷這個集合然后問題就解決了!

  也許我的理解有些不對的地方,希望大家指正,如果大家遇到相同的問題了,希望可以看到此文章,快速的解決問題!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM