如何确定获得的 Java 结果集是否为空?

2022-09-04 06:25:26
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

为什么会这样?


答案 1

我通常使用的模式如下:

boolean empty = true;
while( rs.next() ) {
    // ResultSet processing here
    empty = false;
}

if( empty ) {
    // Empty result set
}

答案 2

这是一个简单的方法来做到这一点:

public static boolean isResultSetEmpty(ResultSet resultSet) {
    return !resultSet.first();
}

警告

这会将光标移动到开头。但是,如果您只想测试它是否为空,则可能尚未对它执行任何操作。

或者

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

if(rs.first()) {
    // there's stuff to do
} else {
    // rs was empty
}

引用

ResultSet (Java Platform SE 6)


推荐