当 sql 语句没有返回任何行时,resultset.next() 总是返回 true
Posted
技术标签:
【中文标题】当 sql 语句没有返回任何行时,resultset.next() 总是返回 true【英文标题】:resultset.next() always returning true when there is no rows returned by the sql statement 【发布时间】:2019-04-05 18:39:34 【问题描述】:查询:
SELECT MAX(A.column2) FROM abcd A where A.column1= ? AND A.column3= 1
代码:
resultSet = statement.executeQuery();
if (resultSet.next())
return resultSet.getInt(1);
当我执行这个 sql 查询 "resultSet.next()" 总是给出结果 "true" 即使没有返回行并且 resultSet.getInt(1) 给出 "0" ,如果没有返回行。我的问题是为什么 resultSet.next() 总是 true ? ...如果表中没有返回任何行,我想返回 -1 如何使用结果集来做到这一点?
【问题讨论】:
不要使用像MAX
这样的聚合函数。此外,resultSet.wasNull()
是检查原始操作是否返回 null
的唯一方法。
mysql 文档指出,如果没有找到匹配的行,MAX
将返回NULL
,因此这仍可能算作ResultSet
中的一行。
String query = "SELECT COALESCE(MAX(A.column2), -1) FROM abcd A where A.column1= ? AND A.column3= 1";
怎么样
添加“COALESCE”后,我可以从查询中返回-1。谢谢先生
【参考方案1】:
来自文档:
下一个()
将光标从当前位置向前移动一行。
它总是会向前移动一排,即使没有行,所以一定要检查天气,值是 not null
或 ""
【讨论】:
在我的情况下,即使我在结果集中有十行,它也是相反的。它总是返回 false 而不是 true以上是关于当 sql 语句没有返回任何行时,resultset.next() 总是返回 true的主要内容,如果未能解决你的问题,请参考以下文章
如果 mysql 更新语句执行则返回 true,当没有更新行时返回 false