从 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】:
您看到的是ResultSet
的toString()
方法,您实际上从未从结果中检索值。
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 数据库引擎中的表中计数条目的主要内容,如果未能解决你的问题,请参考以下文章