如何在JDBC中检索MySQL主键的最大值?

时间:2016-06-14 17:40:10

标签: java mysql jdbc max

我正在处理这段代码,但它还没有工作。我已经提出另一个有效的查询,但不是这个。非常感谢帮助。

try {
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection con1 = null;
    con1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/itcomplaintsystem", "root", "colbiecaillat");
    Statement stmt = con1.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT MAX(PHONE) FROM complaints");

    if(rs != null)
    {         
        while(rs.next())
        {
            String cno=rs.getString("C_NO");
            out.println(cno);
        }
    }

    stmt.close();
    rs.close();
    con1.close();
}
catch(Exception e){
    out.println(e);
}

2 个答案:

答案 0 :(得分:0)

您选择的查询部分没有C_NO,如果您需要最大电话,那么您的查询将是:

SELECT MAX(PHONE) as max_phone FROM complaints

假设手机很长,您的完整代码将是:

try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con1 = null;
con1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/itcomplaintsystem", "root", "colbiecaillat");
Statement stmt = con1.createStatement();
ResultSet rs = stmt.executeQuery("SELECT MAX(PHONE) as max_phone FROM complaints");

if(rs != null)
{         
    while(rs.next())
    {
        Long cno=rs.getLong("max_phone");
        out.println(cno);
    }
}

stmt.close();
rs.close();
con1.close();
}
catch(Exception e){
out.println(e);
}

答案 1 :(得分:0)

在您的查询中

SELECT MAX(PHONE) FROM complaints

您没有为结果指定别名。这些函数通常返回随机或默认列名,因此当您执行

String cno=rs.getString("C_NO");

结果集上不存在C_NO列。

要解决此问题,请按此修复您的查询

SELECT MAX(PHONE) as C_NO FROM complaints

使用as C_NO我将为此列提供您尝试获取的别名。