我一直在将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)。我做错了什么?我确保我正在阅读的表包含正确的值,因此查询必须为真。
答案 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
列。