JDBC SELECT COUNT(*) returns HSQLDB 上的空结果集

JDBC SELECT COUNT(*) returns empty resultset on HSQLDB

我希望总是收到一个结果集,其中一行 SELECT COUNT,但 results.next() 总是 returns 错误。这是在 HSQLDB 2.5.1 上。 下面的代码打印:

number of columns: 1. First column C1 with type INTEGER

No COUNT results

           statement = connection.createStatement();
            // check if table empty
            statement.executeQuery("SELECT COUNT(*)  FROM mytable");
            ResultSet results = statement.getResultSet();
            System.out.println("number of columns: " + results.getMetaData().getColumnCount() + ". First column " +results.getMetaData().getColumnName(1) + " with type " +results.getMetaData().getColumnTypeName(1) );
            int numberOfRows = 0;
            boolean hasResults = results.next();
            if (hasResults){
                numberOfRows = results.getInt(1);
                System.out.println("Table size " + numberOfRows );
            }else{
                System.out.println("No COUNT results" );
            }
            statement.close();

在我的 SQL 控制台中执行相同的 SQL 语句工作正常:

C1
104

对该数据库的其他 JDBC 操作也能正常工作。 有什么明显的我想念的吗?

getResultSet方法适用于execute,但不适用于executeQuery,returns一个ResultSet。那是你需要参考的那个,此刻你正在失去它,因为你没有将它分配给任何东西。

https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeQuery(java.lang.String) and https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getResultSet()

ResultSet results = statement.executeQuery("SELECT COUNT(*) FROM mytable");