Java 即使条件为真,也无法进入while循环

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

我正在从数据库中提取数据。请查找以下代码:

我正在使用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()为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没有其他方法可以确定它返回了真的,因为它被认为没有进入循环。