使用 jdbc 更新记录时出错

Error while updating records using jdbc

我收到一个错误:

java.sql.SQLException: Invalid column index

我尝试检查代码和数据库中的拼写错误以及列名及其类型。错误本身看起来很明显并且不言自明,但我无法找到错误。此代码可能有什么问题:

public class MailActivationDAO {

    public void verifyMail(String mailToken, String email) {

        Connection con = null;
        ResultSet rs = null;
        try {
            String userStatus = "";
            con = DBConnection.getConnection();
            String query1 = "SELECT USR_TOKEN, USR_STATUS FROM TBL_USER WHERE USR_PRIMARY_EMAIL=?";
            PreparedStatement statement = con.prepareStatement(query1);
            statement.setString(1, email);

            try {
                rs = statement.executeQuery();
                while (rs.next()) {
                    String token = rs.getString("USR_TOKEN");
                    userStatus = rs.getString("USR_STATUS");
                    System.out.println("user status before activation: " + userStatus);
                    if (mailToken.equalsIgnoreCase(token) && userStatus.equalsIgnoreCase("PENDING")) {

                        userStatus = "ACTIVE";
                        System.out.println("user status after activation: " + userStatus);
                    }
                }
            } catch (Exception e) {
                System.out.println("Error in selecting records");
                e.printStackTrace();
            }

            try {
                String query2 = "UPDATE TBL_USER SET USR_STATUS=? WHERE USR_PRIMARY_EMAIL=?";
                con.prepareStatement(query2);
                statement.setString(1, userStatus);
                statement.setString(2, email);
                int result = statement.executeUpdate();

                if (result > 0) {
                    System.out.println("User activated successfully!");
                }
            } catch (Exception e) {
                System.out.println("Error in updating records");
                e.printStackTrace();
            }

        } catch (Exception e) {
            System.out.println("Wrong query");
            e.printStackTrace();
        } finally {
            try {
                rs.close();
            } catch (SQLException ex) {
                Logger.getLogger(MailActivationDAO.class.getName()).log(Level.SEVERE, null, ex);
            }
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException ex) {
                    Logger.getLogger(MailActivationDAO.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
}

注意:我在更新记录捕获块时出错

您为 UPDATE 创建准备好的语句

con.prepareStatement(query2);

但不要将其分配给仍然包含 SELECT 语句的变量 statement

因此

statement = con.prepareStatement(query2);