结果集没有hasNext的方法.我想检查resultSet是否有任何值
这是正确的方法
if (!resultSet.next() ) {
System.out.println("no data");
}
Run Code Online (Sandbox Code Playgroud)
Sei*_*fer 512
假设您正在使用新返回ResultSet的光标指向第一行之前,更简单的方法是检查它isBeforeFirst().这避免了必须回溯是否要读取数据.
如文档中所述,如果游标不在第一个记录之前或者ResultSet中没有行,则返回false .
if (!resultSet.isBeforeFirst() ) {
System.out.println("No data");
}
Run Code Online (Sandbox Code Playgroud)
Mas*_*low 50
你可以随时做前一个,然后做一个后循环检查
if (!resultSet.next() ) {
System.out.println("no data");
} else {
do {
//statement(s)
} while (resultSet.next());
}
Run Code Online (Sandbox Code Playgroud)
kgi*_*kis 19
你通常会这样做:
while ( resultSet.next() ) {
// Read the next item
resultSet.getString("columnName");
}
Run Code Online (Sandbox Code Playgroud)
如果要报告空集,请添加一个计算读取项的变量.如果您只需要阅读单个项目,那么您的代码就足够了.
Fel*_*ype 13
无论光标位置如何,要完全确定结果集是否为空,我会做这样的事情:
public static boolean isMyResultSetEmpty(ResultSet rs) throws SQLException {
return (!rs.isBeforeFirst() && rs.getRow() == 0);
}
Run Code Online (Sandbox Code Playgroud)
如果ResultSet为空,则此函数将返回true,否则返回false;如果ResultSet已关闭/未初始化,则返回SQLException.
小智 9
最好使用ResultSet.next()以及do {...} while()语法.
"检查任何结果"调用ResultSet.next()将光标移动到第一行,因此使用do {...} while()语法处理该行,同时继续处理循环返回的剩余行.
这样您就可以检查任何结果,同时还可以处理返回的任何结果.
if(resultSet.next()) { // Checks for any results and moves cursor to first row,
do { // Use 'do...while' to process the first row, while continuing to process remaining rows
} while (resultSet.next());
}
Run Code Online (Sandbox Code Playgroud)
根据最可行的答案,建议是使用"isBeforeFirst()".如果你没有"前进型",这不是最好的解决方案.
有一种叫做" .first() "的方法.获得完全相同的结果并不是一件坏事.您检查"结果集"中是否有某些内容并且不要使光标前进.
文档说明:"(...)如果结果集中没有行,则为false ".
if(rs.first()){
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
您也可以调用isBeforeFirst()来测试是否在没有前进光标的情况下返回任何行,然后正常进行. - SnakeDoc 2014年9月2日19:00
但是,"isBeforeFirst()"和"first()"之间存在差异.如果在"仅向前"类型的结果集上完成,则首先生成异常.
比较两个throw部分:http : //docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#isBeforeFirst()http://docs.oracle.com/javase/7/docs /api/java/sql/ResultSet.html#first()
好吧,基本上这意味着你应该使用"isBeforeFirst",只要你有"仅向前"类型.否则使用"first()"就不那么过分了.
如果您想查看结果集中是否有任何行,那将会有效.
请注意,next()始终移动到下一行,因此如果您计划从结果集中进行任何读取,则需要将其考虑在内.
ResultSet的常用用法(简单阅读时)是:
while (resultSet.next())
{
... read from the row here ...
}
Run Code Online (Sandbox Code Playgroud)
如果您next()已经调用一次以检查结果集是否为空,那么显然无法正常工作,请注意这一点.尽管存在"备份"的方法,但并不支持所有类型的结果集.
我相信这是一本实用且容易阅读的文章。
if (res.next()) {
do {
// successfully in. do the right things.
} while (res.next());
} else {
// no results back. warn the user.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
423203 次 |
| 最近记录: |