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");
我希望总是收到一个结果集,其中一行 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");