【发布时间】:2011-04-26 17:33:25
【问题描述】:
我在将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)。我做错了什么?我确保我正在阅读的表包含正确的值,因此查询必须为真。
【问题讨论】:
-
当您拉取
COUNT(*)值本身时,您确定从SELECT COUNT(*) FROM Signal WHERE SignalID = '12345'等查询中得到正确的结果吗? -
@kunal,感谢编辑,但下次请花时间清理代码,以免它跑出屏幕......
-
您的问题被标记为
mysql,但驱动程序看起来像sqliteorg.sqlite.RS.findColumn。你能检查一下你的驱动程序吗? -
通过 JDBC 查询时,不要在查询中包含尾随
; -
getInt(0) 不起作用@Srinivas - 列编号从 1 开始。