从H2数据库引擎中的表中计算entris

use*_*864 0 java sql database h2

我知道我可以用SQL计算SQL中的条目

SELECT COUNT (*) FROM table
Run Code Online (Sandbox Code Playgroud)

但我不知道在Java中怎么做.

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

Statement stmt = conn.createStatement();
stmt.executeQuery("SELECT COUNT (*) FROM table")
Run Code Online (Sandbox Code Playgroud)

结果:

rs2: org.h2.result.LocalResult@41cf3f60 columns: 1 rows: 1 pos: -1
Run Code Online (Sandbox Code Playgroud)

但它应该返回> 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();
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 5

你看到的是toString()方法ResultSet,你从来没有真正从结果的值.

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

你需要做这样的事情:

ResultSet rs = stmt.executeQuery(sql);
int count = -1;
if (rs.next())
{
  count = rs.getInt(1);
}
Run Code Online (Sandbox Code Playgroud)

这在JDBC教程中得到了很好的解释:http:
//docs.oracle.com/javase/6/docs/technotes/guides/jdbc/getstart/resultset.html#998035