【发布时间】:2019-05-12 23:57:27
【问题描述】:
我正在处理一个 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();
}
【问题讨论】:
-
您需要一个额外的“SELECT count(*) userAuth WHERE username = user AND password = pw”语句并检查它是否为零。你应该使用PreparedStatements
-
邮件中有什么不清楚的地方?在插入之前您没有检查任何内容。您正在插入 (executeUpdate()),然后尝试第二次执行相同的插入查询,但这次使用只能执行 select 语句的 executeQuery。您还真的非常需要了解准备好的语句(如果名字是 O'Reilly 怎么办?),除非这是一些玩具项目,否则您真的不应该将密码存储在数据库中。