首页 > 解决方案 > java jdbc在插入表之前检查值是否存在

问题描述

我正在开发一个 Java 项目,但在将值插入表中时遇到了困难。我想在插入此表之前进行检查,看看是否有任何重复。

之后我尝试了一个带有执行查询结果集的 executeUpdate,但我得到“java.sql.SQLException:无法使用 executeQuery() 发出数据操作语句”。

这是我正在使用的代码,谢谢你!

    public void registernow(ActionEvent actionEvent) throws IOException, SQLException {
    ConnectionClass registerClass = new ConnectionClass();
    Connection register = registerClass.getConnection();

    try {
        Statement registerStatement = register.createStatement();
        String sql = "INSERT INTO userAuth (username, password) VALUES ('" + txt_username.getText() + "' , '" + txt_password.getText() + "')";
        registerStatement.executeUpdate(sql);

        ResultSet resultSet = registerStatement.executeQuery(sql);

        if (resultSet.next()) {
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("register.fxml"));
            Parent fxmlregister = (Parent) fxmlLoader.load();
            Stage stage = new Stage();
            stage.setTitle("COMP228 Project Registration Complete!");
            stage.setScene(new Scene(fxmlregister));
            stage.show();
        } else {
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("registerfailed.fxml"));
            Parent fxmlregisterfailed = (Parent) fxmlLoader.load();
            Stage stage = new Stage();
            stage.setTitle("COMP228 Project Registration Failed!");
            stage.setScene(new Scene(fxmlregisterfailed));
            stage.show();
        }

标签: javajdbc

解决方案


正如错误和@JBNizet 已经告诉您的那样,您正在尝试执行相同的更新语句,但使用ExecuteQuery.

因此,您正在尝试使用 a 执行更新语句executeQuery,您应该尝试使用查询的第二个命令

sql = "SELECT COUNT(1) FROM yourTable WHERE yourCondition = true";
ResultSet resultSet = registerStatement.executeQuery(sql);

你真的应该记下@JBNizet 的评论,连接字符串来创建查询是不好的。


推荐阅读