gpt4 book ai didi

java - 我对 Java 中的准备好的语句有问题 - Mysql 8.0

转载 作者:行者123 更新时间:2023-11-29 09:34:27 25 4
gpt4 key购买 nike

我正在处理准备好的语句查询,但查询语法有错误(如我的控制台中所示):

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? , ? , ? )' at line 1

我不知道这是怎么回事。注意:上面的查询在 mysql 上运行(测试),我刚刚更改了 Java 中的值。

connection = DataSource.getConnection();

String insertGame = " insert into games (game_name , game_genre , game_year ) values ( ? , ? , ? ) ";
statment = connection.prepareStatement(insertGame);
statment.setString(1, game.getName());
statment.setString(2, game.getGenre());
statment.setInt(3, game.getYear());
statment.executeUpdate(insertGame);

最佳答案

错误在于您使用的是父类的 Statement.executeUpdate(String) 而不是 PreparedStatement.executeUpdate()

分号作为语句分隔符不属于提供给 JDBC 的单个语句。

    String insertGame = "insert into games (game_name, game_genre, game_year) "
+ "values (?, ?, ?)";
try (PreparedStatement statment = connection.prepareStatement(insertGame)) {
statment.setString(1, game.getName());
statment.setString(2, game.getGenre());
statment.setInt(3, game.getYear());
statment.executeUpdate();
}

对于其余的语句,像 try-with-resources 一样,关闭语句很重要。当因重复的游戏名称抛出 SQLException 时,上面的语句也会关闭 statement

关于java - 我对 Java 中的准备好的语句有问题 - Mysql 8.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57975767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com