[英]Retrieve an aggregated SQL value from a ResultSet in Java
我一直在这个问题上呆了几个小时:有3张桌子,其中一张通过地名和托盘ID连接其他桌子。 为了找出特定托盘上有多少样本,我通过托盘ID汇总了这些位置,这在纯SQL代码中非常有效。
我的Java代码:
ps = connection.prepareStatement("SELECT TRAYID, COUNT(PlaceNo) AS OCCUPIED " +
"FROM PLACE " +
"GROUP BY TRAYID " +
"HAVING TRAYID = ?");
ps.setInt(1, trayId);
rs = ps.executeQuery();
if (!rs.isBeforeFirst()) { throw new CoolingSystemException(); }
else {
spaceOccupied = rs.getInt("OCCUPIED");
最后一行程序崩溃。 我也尝试过使用getInt(1)
代替名称,但是没有任何效果。 如果结果集为空,则会在
if (!rs.isBeforeFirst()) { throw new CoolingSystemException(); }
我肯定知道的是,有一个价值
我肯定是这个地方,因为我在每行之前和之后的每个可以想象的点都记录了它。
有人知道如何解决吗? 我还尝试了get ...()函数中的每个数据类型:(
您的问题是,在检查结果集中是否有任何数据之后,您没有在调用rs.getInt()
之前使用rs.next()
向前移动光标。 现在看来,您似乎只希望结果集最多包含一行,您可以改为执行以下操作:
ps = connection.prepareStatement("SELECT TRAYID, COUNT(PlaceNo) AS OCCUPIED " +
"FROM PLACE " +
"GROUP BY TRAYID " +
"HAVING TRAYID = ?");
ps.setInt(1, trayId);
rs = ps.executeQuery();
if (rs.next()) {
spaceOccupied = rs.getInt("OCCUPIED");
} else {
throw new CoolingSystemException();
}
如果查询未返回任何数据,则首次调用rs.next()
将返回false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.