从 H2 数据库引擎中的表中计数条目

Posted

技术标签:

【中文标题】从 H2 数据库引擎中的表中计数条目【英文标题】:Count entris from table in H2 Database Engine 【发布时间】:2014-10-30 10:53:40 【问题描述】:

我知道我可以统计 SQL 中的条目

SELECT COUNT (*) FROM table

但我不知道如何在 Java 中执行此操作。

这是我执行 SQL 命令的代码。

Statement stmt = conn.createStatement();
stmt.executeQuery("SELECT COUNT (*) FROM table")

结果:

rs2: org.h2.result.LocalResult@41cf3f60 columns: 1 rows: 1 pos: -1

但它应该返回 > 20

我的代码:

Connection conn = null;
    Class.forName("org.h2.Driver");
    conn = DriverManager.getConnection(
            "jdbc:h2:" + Environment.getExternalStorageDirectory()
                    + "/sorter/database", "", "");
Statement stmt = conn.createStatement();

Toast.makeText(context,
                    String.valueOf(stmt.executeQuery(sql)),
                    Toast.LENGTH_LONG).show();

conn.close();
    if (conn != null)
        conn.close();

【问题讨论】:

请告诉我们您从ResultSet检索计数的代码 【参考方案1】:

您看到的是ResultSettoString() 方法,您实际上从未从结果中检索值。

executeQuery 返回用于获取实际数据的ResultSet。它不是直接查询的结果(想想返回多行多列时这应该如何工作)

你需要做这样的事情:

ResultSet rs = stmt.executeQuery(sql);
int count = -1;
if (rs.next())

  count = rs.getInt(1);

JDBC 教程中对此进行了很好的解释:http://docs.oracle.com/javase/6/docs/technotes/guides/jdbc/getstart/resultset.html#998035

【讨论】:

【参考方案2】:

另一种可能是

ResultSet rs=conn.prepareStatement("SELECT COUNT(*) FROM table").executeQuery();
if(rs.next()) sysout(rs.getInt(1));

【讨论】:

以上是关于从 H2 数据库引擎中的表中计数条目的主要内容,如果未能解决你的问题,请参考以下文章

我想加入我在 Microsoft Access 中计数的表

从一个表中的多个表中计数代码返回 0

MySQL中的表级锁

H2 数据库引擎

MySQL中的各种引擎

MySQL中的各种引擎