java - 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();
}
解决方案
正如错误和@JBNizet 已经告诉您的那样,您正在尝试执行相同的更新语句,但使用ExecuteQuery
.
因此,您正在尝试使用 a 执行更新语句executeQuery
,您应该尝试使用查询的第二个命令
sql = "SELECT COUNT(1) FROM yourTable WHERE yourCondition = true";
ResultSet resultSet = registerStatement.executeQuery(sql);
你真的应该记下@JBNizet 的评论,连接字符串来创建查询是不好的。
推荐阅读
- amazon-web-services - 共享 AWS 授权方达到引用限制
- angular - 如何翻译 ng-multiselect-dropdown 设置 TS
- microsoft-graph-api - 使用 Graph API 按查找列筛选 SharePoint 库项目
- octave - 读取 uicontrol 复选框值
- aws-codebuild - 无法在 CodeBuild 中找到多阶段构建的 docker build 输出
- r - 用 R 中的完整符号替换特定模式(缩短符号)
- python - 如果行值小于 1000000,如何删除列
- javascript - 如何从 React 中的状态数组中按索引删除项目
- reactjs - GET 请求不起作用,但 POST 请求正在用于数据库查询
- terraform - 如何在创建本地人时遍历 terraform 中的地图列表?