2016-06-14 179 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

它解決了。請看看我面臨的另一個問題。 –