【问题标题】:Set mySQL MAX value to java variable将 mySQL MAX 值设置为 java 变量
【发布时间】:2018-04-29 09:03:13
【问题描述】:

大家好,我正在尝试从 mySQL MAX 函数中获取值(尝试获取最高的客户 ID)并将其存储在我的 java 代码中的变量中。似乎无法正常工作。

public static int findMaxID() {
    int maxID = 0;
    String updateStmt =
            "SELECT @maxID := MAX(idCustomer)\n" +
                    "FROM customers\n";
    try {
        DBUtil.dbExecuteQuery(updateStmt);
        System.out.println(maxID);
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    return maxID;
}

【问题讨论】:

    标签: java mysql database max


    【解决方案1】:

    使用语句,最好是准备好的语句:

    int maxID = 0;
    String sql = "SELECT MAX(idCustomer) AS max_id FROM customers";
    PreparedStatement ps = conn.prepareStatement(sql);
    ResultSet rs = ps.executeQuery();
    if (rs.next()) {
        int maxID = rs.getInt("max_id");  // access the max value via its alias
    }
    

    虽然您当前的查询可能是有效的 MySQL,但会话变量 @maxID 仅在 MySQL 上可用,而在您的 Java 代码中不可用。要访问它,您需要再次编写另一个查询。

    【讨论】:

    • +10。同意没有必要(显然在这里)用不必要的用户定义变量来混淆 MYSQL 会话。执行 SELECT 语句要么返回结果集,要么返回错误。
    • 我不知道该怎么做,但它做到了。我现在可以为新客户增加 ID。
    猜你喜欢
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 2011-06-06
    • 2013-06-05
    相关资源
    最近更新 更多