2016-08-03 66 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}