2016-06-14 114 views
0

我正在处理此代码,但它不起作用。我已经把另一个正在工作的查询,但不是这个。帮助将不胜感激。如何检索JDBC中MySQL主键的最大值?

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); 
} 

回答

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我给此列你想获得别名。

+0

我只是做了你说过。该网页不显示任何像以前一样。为什么这样? –

+0

如果直接在数据库上执行查询,你会得到任何结果吗? –

+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); 
} 
+0

我只是做了你所说的。该网页不显示任何像以前一样。为什么这样? –

+0

手机的数据类型是什么? – snaikar

+0

它解决了。请看看我面临的另一个问题。 –