如何检查输入的数据是否存在于数据库

时间:2017-06-08 10:06:59

标签: java jdbc

我想知道我在这里缺少什么,我无法比较这个' id'从Textfield到数据库中的数据。

例如:

  
    

如果TextField1 ==数据库中的数据。

  
     

输出:由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

5 个答案:

答案 0 :(得分: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)

  1. 首先,您需要记录引发的异常的堆栈跟踪。至少您可以在exc.printStackTrace()部分使用catch
  2. 其次,您的问题是您为SQL查询声明了一个参数,但您没有为其添加任何值。
  3.     PreparedStatement p = con.prepareStatement("SELECT * FROM item_list WHERE id = ?");
        p.setString(1, TF[0].getText() ); //VALUE_FROM_YOUR_TEXT_INPUT
    
    1. 您不需要遍历所有结果集来检查是否存在具有此ID的用户。您可以检查结果集是否为空。

答案 2 :(得分:0)

如果您的对象不为空,则可以intValue()使用Integer对象

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

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

答案 3 :(得分:0)

您未在语句中设置id参数的值。不熟悉Java,但在C#中它会是这样的 statement.Parameters.AddWithValue("@id", id)

答案 4 :(得分: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!