java - 将 SQL Count 函数返回给 Java

标签 java mysql count

我在获取 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/

相关文章:

java - 如何验证jar签名

Node.js MongoDB 驱动游标计数不正确

php - 复杂查询+分页脚本

php - Mysql 在高流量数据库上使用过滤器计算行数

mysql - 如何以编程方式从表中获取种子字段名称?

java - 如何删除组合框中选定的值

java - 根据屏幕分辨率自动调整JInternalFrame的大小

java - 按功能隐藏 Windows 离开/取消弹出窗口

php - 带问号和冒号的 MySQL 语句

mysql - SELECT 列表不在 GROUP BY 子句中且包含非聚合列?