2017-06-08 44 views
0

我想知道我在這裏缺少什麼,我無法比較Textfield的'id'和數據庫中的數據。如何檢查輸入的數據是否存在於數據庫中

例如:

如果文本字段1 ==來在數據庫中的數據。

輸出:由GSW掃描。

Connection con = connect.getConnection(); 
     String query = "SELECT * FROM item_list WHERE id = ?"; 

     Statement st; 
     ResultSet rs; 
     int id; 

     try{ 
      st = con.createStatement(); 
      rs = st.executeQuery(query); 

      while(rs.next()){ 
       id = rs.getInt("id"); 

       if(Integer.parseInt(TF[0].getText()) == id){ 
       System.out.println(id); 
       } 
      } 
     }catch(SQLException exc){ 
      System.out.println("Not Found!"); 
     } 

請檢查圖像輸出。 我附上下面的圖像文件。

Sample Output

enter image description here

+2

好吧,你正在做的是在一個catch,打印異常,找出問題。我在PhpMyAdmin看到該字段被稱爲'Id',並且在查詢中使用'id'。我打賭一個字段未知的「id」exceletion – AxelH

+0

不應該使用'PreapredStatements',除非'id'確實等於'?' – philantrovert

+0

請嘗試記錄異常堆棧跟蹤,它會幫助您正確理解問題 –

回答

0

您可以使用intValue()Integer對象明顯的,如果你的對象不是空

while(rs.next()){ 
     id = rs.getInt("id"); 

     if(Integer.parseInt(TF[0].getText()).intValue() == id){ 
      System.out.println(id); 
     } 
} 
0

你沒有設置語句中的id參數的值。不熟悉Java,但在C#中它會是這樣的 statement.Parameters.AddWithValue("@id", id)

1

這裏有一些錯誤,我看到

  • 您在查詢中使用的參數,"SELECT * FROM item_list WHERE id = ?";所以使用PreparedStatement
  • 將該參數設置那PreparedStatement ps = connection.preparedStatement(query);ps.setInt(1, Integer.parseInt(TF[0].getText()));
  • 不捕獲異常沒有記錄它,在這裏你的查詢作爲語法錯誤,但你不知道它。
  • 小心與數據庫中的字段名「ID」

這可能不是所有大寫...

和當然,現在你只能得到行與ID,你可以簡單地檢查是否至少有一行返回來驗證它是否存在。

1
  1. 首先,您需要記錄拋出異常的堆棧跟蹤。至少你可以在你的catch部分使用exc.printStackTrace()
  2. 其次,你的問題是你爲你的SQL查詢聲明瞭一個參數,但是你沒有給它任何值。

PreparedStatement p = con.prepareStatement("SELECT * FROM item_list WHERE id = ?"); 
    p.setString(1, TF[0].getText()); //VALUE_FROM_YOUR_TEXT_INPUT 
  • 你並不需要遍歷所有的結果集,以檢查是否有這樣的ID的用戶存在。您可以檢查結果集是否爲空。
  • 0

    謝謝你們!我一直在嘗試並閱讀你的所有建議,並且找到並調試了它。多虧了那個人說我需要檢查我能得到什麼信息。

    讚賞你的全部幫助。

    Connection con = connect.getConnection(); 
         String query = "SELECT * FROM item_list"; 
    
         Statement st; 
         ResultSet rs; 
         int id; 
    
         try{ 
          st = con.createStatement(); 
          rs = st.executeQuery(query); 
    
          while(rs.next()){ 
           id = rs.getInt("id"); 
    
           if(Integer.parseInt(TF[0].getText()) == id){ 
           System.out.println(id); 
    
           JOptionPane.showMessageDialog(null, "FOUND!"); 
           } 
           else{ 
            JOptionPane.showMessageDialog(null, "Not Found!"); 
           } 
          } 
         }catch(SQLException exc){ 
          JOptionPane.showMessageDialog(null, exc.getMessage()); 
    
         } 
    

    ID Found!

    相關問題