将 SQL 计数函数返回到 Java
Returning SQL Count function to Java
我在将 SQL 计数查询设为 return 正确值时遇到问题。我知道已经有几个关于这个主题的问题已经发布,但我希望有第二双眼睛检查我的代码,看看他们是否注意到我遗漏了什么。我发现了几个似乎有效的类似方法的例子,据我所知,我的方法是一样的。这是我调用 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;
}
无论我做了什么调整,它总是 returns -1 因为重新分配计数的行抛出 SQLException。值得注意的是,我所有其他联系数据库的方法都在连接并 returning 正确的值,并且我的 java 代码在成功调用并 returned 一些之后调用此方法这些其他方法。如果有人在我的代码中发现错误或需要其他信息,请告诉我。谢谢
其他规格:
- SpringMVC
- XAMPP 与 MySQL db
尝试使用
if( rs.next())
count = rs.getInt(1);
你得到异常的原因是你在调用 getInt
而没有调用 next()
:
rs = st.executeQuery(countAddress);
if (rs.next()) {
count = rs.getInt("AddressCount");
}
之所以在调用next
之前调用getInt
是非法的,是因为executeQuery()
returns你一个reader没有定位在第一个(在这种情况下,唯一的)结果。
我在将 SQL 计数查询设为 return 正确值时遇到问题。我知道已经有几个关于这个主题的问题已经发布,但我希望有第二双眼睛检查我的代码,看看他们是否注意到我遗漏了什么。我发现了几个似乎有效的类似方法的例子,据我所知,我的方法是一样的。这是我调用 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;
}
无论我做了什么调整,它总是 returns -1 因为重新分配计数的行抛出 SQLException。值得注意的是,我所有其他联系数据库的方法都在连接并 returning 正确的值,并且我的 java 代码在成功调用并 returned 一些之后调用此方法这些其他方法。如果有人在我的代码中发现错误或需要其他信息,请告诉我。谢谢
其他规格:
- SpringMVC
- XAMPP 与 MySQL db
尝试使用
if( rs.next())
count = rs.getInt(1);
你得到异常的原因是你在调用 getInt
而没有调用 next()
:
rs = st.executeQuery(countAddress);
if (rs.next()) {
count = rs.getInt("AddressCount");
}
之所以在调用next
之前调用getInt
是非法的,是因为executeQuery()
returns你一个reader没有定位在第一个(在这种情况下,唯一的)结果。