我使用以下方法确定我的结果集不为空并继续对值进行断言。
...
resultSet = statement.executeQuery("select count(*) as rowCount from tbName where...");
while (resultSet.next()) {
rowCount = Integer.parseInt(resultSet.getString("rowCount"));
}
Assert.assertTrue(rowCount > 0);
resultSet = statement.executeQuery("select * from tbName where ...");
while (resultSet.next()) {
//do some assertions on values here.
}
...
无论如何直接在一个查询中直接从resultSet获取行数?像下面的东西?
resultSet = statement.executeQuery("select * from tbName where ...");
if( resultSet.count/length/size > 0) {
}
答案 0 :(得分:3)
您可以更改查询以包含行计数的列:
select t.*, count(*) over () as row_count
from tbName t
where ...
然后你可以使用
获得计数int rowCount rs.getInt("row_count");
请注意,您不会获得0
计数,因为这意味着实际查询首先没有返回任何内容。因此,您无法使用它来验证您的查询是否返回任何内容。如果仅想要检查结果是否为空,请使用next()
resultSet = statement.executeQuery(".....");
if (resultSet.next()) {
// at least one row returned
} else {
// no rows returned at all
}
顺便说一句:您应该始终使用与列数据类型匹配的getXXX()
方法。在所有列上使用getString()
不是一个好主意。
答案 1 :(得分:1)
1)将光标移动到最后一行: resultset.last();
2)检索当前行号: int count = resultset.getRow();
提示: 它基于你通过调用函数创建一个语句“ 语句createStatement(int resultSetType,int resultSetConcurrency) 抛出SQLException“ 生成可滚动的resultSet。
答案 2 :(得分:0)
有两种方法可以获得行数。 1)如果要检查表中存在的行数,可以使用计数查询。 2)如果要计算结果集中的行数,则必须遍历该结果集以计算行数。