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

bxjv4tth  于 2023-01-09  发布在  SQLite
关注(0)|答案(2)|浏览(264)

我在将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:无此列:'行计数1'
在组织中。sqlite。RS。查找列(RS.java:116)
在组织中。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)。我做错了什么?我正在确保读取的表包含正确的值,因此查询必须为真。

rwqw0loc

rwqw0loc1#

只需使用rp1.getInt(1)--它将结果集中的第一列作为int返回--这正是您想要的。
如果有更多值,请使用rp1.getInt(2)获取第二个值,以此类推...

6yt4nkrj

6yt4nkrj2#

第二个示例有一个错误:

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

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

相关问题