请看下面的代码。这里的问题是查询返回一个没有行的列(LOGIN)(这是SQL Developer所说的),rs.next()正在继续,rs.getString(1)返回表Users的第一行。我不明白在ResultSet字段currentRow下的值是-1。这意味着它从查询中得到一行,这是一个质量不连贯。如果没有返回行,我应该如何强制next()方法不要前进?
ResultSet rs = null;
String name = null;
Statement stat = db.conn.createStatement();
String query = "SELECT Users.LOGIN FROM Users, Accessibility WHERE Accessibility.Users_IDGRANTING=4 AND Users.ID=Accessibility.Users_IDRECEIVING";
rs = stat.executeQuery(query);
while(rs.next())
{
name = rs.getString(1);
}
答案 0 :(得分:0)
ResultSet
的光标最初位于之前第一条记录。因此,如果rs
为空,则rs.next()
将立即返回false
,并且您的while循环将立即退出。只需检查你的rs是否是由另一个语句创建的。
答案 1 :(得分:0)
"如果没有返回任何行,我应该如何强制next()方法不要前进?"
这就是它的作用,rs.next()在这种情况下将是假的。