2016-08-03 62 views
0

我正在從數據庫中提取數據。請找到下面的代碼:即使條件爲真,也不能進入while循環

我從Springframework.jdbc中使用「org.springframework.jdbc.support.rowset.SqlRowSet」。

String query="SELECT * from TABLE_NAME where id=? and password=?"; 
args.add(userId); 
args.add(password); 
SqlRowSet rs = this.jdbcTemplate.queryForRowSet(query, args.toArray()); 
while (rs.next()) { 
---Some Code--- 
} 

rs.next()是真的,但它不會進入循環。在如何解決這個問題上需要一些幫助。任何幫助表示讚賞。

+6

它沒有任何意義,什麼使你確信rs.next()返回true? –

+1

什麼是'SqlRowSet'? – Pshemo

+0

在調試代碼的時候,我發現這個值是真的,但沒有進入循環。 @elkorchianas – user3213490

回答

3

這只是一個猜測,但既然你知道rs.next()返回true,這意味着你執行它(無論是在調試模式或打印到控制檯或其他)。

每次執行它時,都會將行集推進到下一行(如果有)。如果你的行集只包含1行,並且在循環之前「檢查」rs.next()返回的值,則循環永遠不會進入,因爲再次調用循環時不會再有行,所以它返回false

+0

這幾乎肯定是答案。 OP沒有其他方式可以確定它是真的,因爲它沒有進入循環。 – shmosel

0

我不這樣做的原因。但我已經改變了實施。我通過從resultSet獲取大小來將while循環更改爲for循環。非常感謝您的建議。

int size =0; 
      if (rs != null) 
      { 
       rs.beforeFirst(); 
       rs.last(); 
      size = rs.getRow(); 
      } 
      for (int i =0;i<size;i++){//Do SOMETHING}