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

Java 如何检查数据库中是否存在输入的数据,java,jdbc,Java,Jdbc,我想知道我这里缺少什么,我无法将文本字段中的“id”与数据库中的数据进行比较 例如: 如果TextField1==指向数据库中的数据 输出:GSW扫掠 请检查图像输出。 我附上下面的图像文件 如果对象不为null,则可以对Integer对象使用intValue while(rs.next()){ id = rs.getInt("id"); if(Integer.parseInt(TF[0].getText()).intValue() == id){

我想知道我这里缺少什么,我无法将文本字段中的“id”与数据库中的数据进行比较

例如:

如果TextField1==指向数据库中的数据

输出:GSW扫掠

请检查图像输出。 我附上下面的图像文件

如果对象不为null,则可以对Integer对象使用intValue

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

      if(Integer.parseInt(TF[0].getText()).intValue() == id){
           System.out.println(id);
      }
}
如果对象不为null,则可以对Integer对象使用intValue

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

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

您没有在语句中设置id参数的值。不熟悉Java,但在C语言中可能类似
语句.参数。AddWithValue@id,id

您没有在语句中设置id参数的值。不熟悉Java,但在C语言中可能类似
语句.参数。AddWithValue@id,id

我看到了一些错误

在查询中使用一个参数,从item_列表中选择*,其中id=?;因此,请使用预先准备好的声明 将参数设置为PreparedStatementPS=connection.preparedStatementquery;使用ps.setInt1,Integer.parseIntTF[0].getText; 不要在不记录异常的情况下捕获异常,这里您的查询是一个语法错误,但您不知道它。 注意数据库字段名称Id中的大写字母 这可能不是一切


当然,现在您只获得了具有该ID的行,您可以简单地检查是否至少有一行返回,以验证它是否存在。

我看到了一些错误

在查询中使用一个参数,从item_列表中选择*,其中id=?;因此,请使用预先准备好的声明 将参数设置为PreparedStatementPS=connection.preparedStatementquery;使用ps.setInt1,Integer.parseIntTF[0].getText; 不要在不记录异常的情况下捕获异常,这里您的查询是一个语法错误,但您不知道它。 注意数据库字段名称Id中的大写字母 这可能不是一切

当然,现在您只获得了具有该ID的行,您可以简单地检查是否至少有一个行返回,以验证它是否存在

首先,您需要记录抛出的异常的堆栈跟踪。至少可以在catch部分使用exc.printStackTrace。 其次,您的问题是您为SQL查询声明了一个参数,但没有为其添加任何值。 您不需要迭代所有结果集来检查是否存在具有此类id的用户。您可以检查结果集是否为空。 首先,您需要记录抛出的异常的堆栈跟踪。至少可以在catch部分使用exc.printStackTrace。 其次,您的问题是您为SQL查询声明了一个参数,但没有为其添加任何值。 您不需要迭代所有结果集来检查是否存在具有此类id的用户。您可以检查结果集是否为空。
谢谢你们!我一直在尝试并阅读你的所有建议,我已经找到并调试了它。感谢那个说我需要检查我能在捕获中得到什么信息的人

谢谢你的帮助

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

        }

谢谢你们!我一直在尝试并阅读你的所有建议,我已经找到并调试了它。感谢那个说我需要检查我能在捕获中得到什么信息的人

谢谢你的帮助

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

        }

好的,您正在catch中这样做,打印异常以找出问题。我在PhpMyAdmin中看到该字段名为Id,您在查询中使用Id。我打赌是一个未知id的字段异常,除非您的id确实相等,否则您不应该使用PrePred语句吗?请尝试记录异常堆栈跟踪,它将帮助您正确理解问题。好的,您正在捕获中执行此操作,打印异常以找出问题。我在PhpMyAdmin中看到该字段名为Id,您在查询中使用Id。我打赌是一个未知id的字段异常,除非您的id确实相等,否则您不应该使用prepred语句吗?请尝试记录异常堆栈跟踪,这将帮助您正确理解问题