前幾天碰見了一個很奇葩的問題,使我百思不得其解,今天就寫一下我遇見的問題吧,也供大家參考,別和我犯同樣的毛病。
首先說下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中遍歷這個集合然后問題就解決了!
也許我的理解有些不對的地方,希望大家指正,如果大家遇到相同的問題了,希望可以看到此文章,快速的解決問題!