即使条件为真也无法进入while循环
Posted
技术标签:
【中文标题】即使条件为真也无法进入while循环【英文标题】:Failure to enter the while loop even when the condition is true 【发布时间】:2016-08-03 16:36:34 【问题描述】:我正在从数据库中提取数据。请在下面找到代码:
我正在使用 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() 是真的,但它不会进入循环。需要一些帮助来解决这个问题。任何帮助表示赞赏。
【问题讨论】:
这没有意义,是什么让你确定 rs.next() 返回 true? 什么是SqlRowSet
?
在调试代码时,我发现该值为真,但没有进入循环。 @elkorchianas
@Pshemo 它是“org.springframework.jdbc.support.rowset”中的一个类
如果循环没有执行,并且您确定循环没有执行,那么无论您怎么想,re.next() 都不会返回 true。就是这么简单。
【参考方案1】:
这只是一个猜测,但既然您知道 rs.next()
返回 true
,这意味着您执行了它(在调试模式下或打印到控制台或其他方式)。
每次执行时,它会将行集推进到下一行(如果有的话)。如果您的行集仅包含 1 行,并且您在循环之前“检查”rs.next()
返回的值,则将永远不会进入循环,因为当再次调用它时没有更多行,因此它返回 false
。
【讨论】:
这几乎肯定是答案。 OP 没有其他方法可以确定它返回 true,因为它应该没有进入循环。【参考方案2】:我不知道为什么。但是我改变了实现。通过从 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
【讨论】:
以上是关于即使条件为真也无法进入while循环的主要内容,如果未能解决你的问题,请参考以下文章