将SELECT COUNT(*)查询结果分配给Java变量

时间:2011-04-26 17:33:25

标签: java mysql resultset

我一直在将SELECT COUNT(*)查询的结果分配给Java变量时遇到问题。我正在将查询结果分配给ResultSet。然后,我试图检索计数的值并将其分配给变量。我在尝试这样做时遇到错误。

这是我的代码:

ResultSet rc1 = null;
int rowCount1;
Statement stat = conn.createStatement();

rc1 = stat.executeQuery("SELECT COUNT(*) AS rowcount1 
   FROM Signal WHERE SignalId = 1;");

if (rc1.next())
        rowCount1 = rc1.getInt("rowcount1");

然后我收到以下错误:

  

java.sql.SQLException:没有这样的列:'rowcount1'
  在org.sqlite.RS.findColumn(RS.java:116)
  在org.sqlite.RS.getInt(RS.java:219)

显然,问题在于尝试将AS之后的内容分配给变量。关于包含AS的查询,我找不到很多信息。对于我不算数的查询,我得到了同样的错误。例如,如果我有以下代码:

ResultSet rp1 = null;
int rowCount1 = 0;
Statement stat = conn.createStatement();

rp1 = stat.executeQuery("SELECT Signal AS Sig1 
  FROM Observations WHERE SignalId = 1;");

if (rp1.next())
       rowCount1 = rp1.getInt("rowcount1");

我在上一段代码中遇到了同样的错误(没有这样的列:rowCount1)。我做错了什么?我确保我正在阅读的表包含正确的值,因此查询必须为真。

2 个答案:

答案 0 :(得分:8)

只需使用rp1.getInt(1) - 这会将结果集中的第一列作为int返回 - 这就是您想要的。

如果您有更多值,请使用rp1.getInt(2)获取第二个值等...

答案 1 :(得分:0)

第二个例子有一个错误:

rp1 = stat.executeQuery("SELECT Signal AS Sig1 
  FROM Observations WHERE SignalId = 1;");
...
   rowCount1 = rp1.getInt("rowcount1")

将始终失败,因为您的查询中没有rowcount1列。