首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何判断获取的Java ResultSet是否为空?

如何判断获取的Java ResultSet是否为空?
EN

Stack Overflow用户
提问于 2010-05-30 21:30:30
回答 10查看 55.7K关注 0票数 13
代码语言:javascript
运行
复制
Class.forName("org.sqlite.JDBC");
Connection conn =
    DriverManager.getConnection("jdbc:sqlite:userdata.db");
Statement stat = conn.createStatement();

ResultSet rs = stat.executeQuery("SELECT * from table WHERE is_query_processed = 0;");

int rowcount = rs.getRow(); 
System.out.println("Row count = "+rowcount); // output 1

rs.first(); // This statement generates an exception

为甚麽呢?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-05-30 21:37:27

我通常使用的模式如下:

代码语言:javascript
运行
复制
boolean empty = true;
while( rs.next() ) {
    // ResultSet processing here
    empty = false;
}

if( empty ) {
    // Empty result set
}
票数 21
EN

Stack Overflow用户

发布于 2010-05-30 21:38:47

下面是一个简单的方法:

代码语言:javascript
运行
复制
public static boolean isResultSetEmpty(ResultSet resultSet) {
    return !resultSet.first();
}

注意事项

这会将光标移动到开头。但是,如果您只是想测试它是否为空,那么您可能还没有对它做任何事情。

另一个选择

在进行任何处理之前,请立即使用first()方法。SELECT rs = stat.executeQuery("SELECT * from ResultSet WHERE is_query_processed = 0;");

代码语言:javascript
运行
复制
if(rs.first()) {
    // there's stuff to do
} else {
    // rs was empty
}

参考文献

ResultSet (Java Platform SE 6)

票数 5
EN

Stack Overflow用户

发布于 2010-05-30 21:36:13

你也可以这样做:

代码语言:javascript
运行
复制
rs.last();
int numberOfRows = rs.getRow();
if(numberOfRows) {
    rs.beforeFirst();
    while(rs.next()) {
        ...
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2938812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档