2017-06-08 46 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!

    相关问题