Java 即使条件为真,也无法进入while循环
我正在从数据库中提取数据。请查找以下代码: 我正在使用springframework.jdbc中的“org.springframework.jdbc.support.rowset.SqlRowSet”Java 即使条件为真,也无法进入while循环,java,sql,jdbc,spring-jdbc,Java,Sql,Jdbc,Spring Jdbc,我正在从数据库中提取数据。请查找以下代码: 我正在使用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.queryForRow
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()为true,但它不会进入循环。需要一些关于如何克服这个问题的帮助。非常感谢您的帮助。这只是一个猜测,但由于您知道
rs.next()
返回true
,这意味着您执行了它(无论是在调试模式下还是打印到控制台或其他)
每次执行它时,它都会将行集前进到下一行(如果有)。如果您的行集仅包含1行,并且您在循环之前“检查”了由
rs.next()
返回的值,则循环将永远不会被输入,因为再次调用时没有更多的行,因此它将返回false
这只是猜测,但因为您知道rs.next()
返回true
,这意味着您执行了它(无论是在调试模式下,还是打印到控制台上,或者其他任何方式)
每次执行它时,它都会将行集前进到下一行(如果有)。如果您的行集仅包含1行,并且您在循环之前“检查”了由
rs.next()
返回的值,则循环将永远不会被输入,因为再次调用时没有更多行,因此它返回false
我不知道原因。但我已经改变了实现。通过从结果集获取大小,我将while循环更改为for循环。非常感谢你的建议
int size =0;
if (rs != null)
{
rs.beforeFirst();
rs.last();
size = rs.getRow();
}
for (int i =0;i<size;i++){//Do SOMETHING}
int size=0;
如果(rs!=null)
{
rs.beforeFirst();
rs.last();
大小=rs.getRow();
}
for(int i=0;i我不知道这是什么原因。但我更改了实现。我通过从结果集获取大小将while循环更改为for循环。非常感谢您的建议
int size =0;
if (rs != null)
{
rs.beforeFirst();
rs.last();
size = rs.getRow();
}
for (int i =0;i<size;i++){//Do SOMETHING}
int size=0;
如果(rs!=null)
{
rs.beforeFirst();
rs.last();
大小=rs.getRow();
}
对于(int i=0;iIt没有意义,是什么确保rs.next()返回true?什么是SqlRowSet
?调试代码时,我发现该值为true,但没有进入循环@elkorchianas@Pshemo它是“org.springframework.jdbc.support.rowset”中的一个类如果循环没有执行,并且您确信循环没有执行,那么无论您怎么想,re.next()都不会返回true。这是直截了当的。这没有意义,是什么让您确保rs.next()是否返回true?什么是SqlRowSet
?调试代码时,我发现该值为true,但没有进入循环@elkorchianas@Pshemo它是“org.springframework.jdbc.support.rowset”中的一个类,如果循环没有执行,并且您确信循环没有执行,那么不管您怎么想,re.next()返回的不是真的。这是直接的。这几乎肯定是答案。OP没有其他方法可以确定它返回了真的,因为它被认为没有进入循环。这几乎肯定是答案。OP没有其他方法可以确定它返回了真的,因为它被认为没有进入循环。