我在获取 SQL 计数查询以返回正确值时遇到问题。我知道已经有几个关于这个主题的问题已经发布,但我希望有第二双眼睛检查我的代码,看看他们是否注意到我遗漏了什么。我发现了几个似乎有效的类似方法的例子,据我所知,我的方法是一样的。这是我调用 SQL 查询的方法:
public int countAddresses(int id) {
ResultSet rs = null;
Statement st = null;
int count = -1;
try{
st = conn.createStatement();
String countAddress = "SELECT COUNT(*) AS AddressCount from address WHERE contact_id =" + id;
rs = st.executeQuery(countAddress);
count = rs.getInt("AddressCount"); //throwing exception
}
catch(SQLException e) {
e.printStackTrace();
}
return count;
}
无论我做了什么调整,它总是返回 -1,因为重新分配计数的行抛出 SQLException。值得注意的是,我所有其他联系数据库的方法都连接并返回正确的值,并且我的 java 代码在成功调用并返回其中一些其他方法后调用此方法。如果有人在我的代码中发现错误或需要其他信息,请告诉我。谢谢。
其他规范:
- Spring MVC
- 带有 MySQL 数据库的 XAMPP
最佳答案
你得到异常的原因是你调用了 getInt
而没有调用 next()
:
rs = st.executeQuery(countAddress);
if (rs.next()) {
count = rs.getInt("AddressCount");
}
在调用 next
之前调用 getInt
是非法的原因是 executeQuery()
返回给你一个不在第一个(在本例中是唯一的)结果。
关于java - 将 SQL Count 函数返回给 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32278532/