【问题标题】:JDBC COUNT() a certain row how to get the result [closed]JDBC COUNT() 某行如何得到结果[关闭]
【发布时间】:2019-11-29 01:11:30
【问题描述】:

我对 JDBC 很陌生,我正在练习执行查询和语句。

try {
            Connection conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);

            Statement st = conn.createStatement();

            String query = "SELECT COUNT(*) AS \"Number of suppliers\", city\r\n" + 
                    "FROM supplier\r\n" + 
                    "GROUP BY city\r\n" + 
                    "ORDER BY city DESC\r\n";
            //st.executeUpdate(query);

            ResultSet rs = st.executeQuery(query);  

            while(rs.next()) {
                System.out.println(rs.getString("supplierNum"));
                System.out.println(rs.getString("city"));
                space();
            }   

        st.close();
        conn.close();

        }

我正在尝试使用SELECT COUNT(supplierNum) AS "Number of suplliers", cityFROM supplierGROUP BY city ORDER BY city DESC; 执行和打印结果

控制台只是终止,什么都没有发生,没有错误消息,只是一个空白屏幕。

这是我要访问的表

CREATE TABLE supplier 
(
    supplierNum CHAR(2) NOT NULL,
    name CHAR(10) NOT NULL,
    status TINYINT(4) NOT NULL,
    city VARCHAR(10) NOT NULL,

    PRIMARY KEY (supplierNum)
);

【问题讨论】:

  • 您是想获取计数,还是尝试遍历行并打印出数据?在 SQL 中,COUNT() 被认为是一个聚合函数,您不能简单地使用它并在同一语句中选择其他列(名称、状态等)而不进行分组或类似。
  • @KellyM 在使用COUNT() 作为解析函数的情况下不正确。

标签: java database jdbc


【解决方案1】:

您将计数列别名为 "Number of suplliers",但您的 JDBC 代码正在尝试查找 supplierNum。到处使用一致的别名来解决这个问题:

String query = "SELECT city, COUNT(*) AS supplierCnt " + 
               "FROM supplier " + 
               "GROUP BY city " + 
               "ORDER BY city DESC";

ResultSet rs = st.executeQuery(query); 

while (rs.next()) {
    System.out.println(rs.getString("supplierCnt"));
    System.out.println(rs.getString("city"));
    space();
}   

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 2011-11-21
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    相关资源
    最近更新 更多