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

时间:2014-10-30 10:53:40

标签: java sql database h2

我知道我可以用

计算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();

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

另一种可能性是

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