将 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 一些之后调用此方法这些其他方法。如果有人在我的代码中发现错误或需要其他信息,请告诉我。谢谢

其他规格:

尝试使用

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没有定位在第一个(在这种情况下,唯一的)结果。