2014-10-30 118 views
0

表entris我知道,我可以計數從H2數據庫引擎

SELECT COUNT (*) FROM table 

算在SQL中的條目,但我不知道怎麼辦perfom在Java中。

這是我的代碼來執行SQL命令。

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

結果:

rs2: [email protected] 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(); 
+0

請向我們展示從「ResultSet」中檢索計數的代碼 – 2014-10-30 10:55:50

+0

添加到文章 – user3531864 2014-10-30 11:00:28

+0

哦,當然,lmgtfy ... – 2014-10-30 11:04:48

回答

3

你看到的是的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

0

另一種可能性是

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