java - JDBC 准备语句语法错误

标签 java mysql sql jdbc sql-insert

我正在尝试使用准备好的语句插入到车辆表中。 This is the table shown in PHPMyAdmin .

这是我的java代码

 try {
        String sql = "INSERT INTO vehicle (vin, serial, make, model, year, reg.no., status) VALUES (?, ?, ?, ?, ?, ?, ?)";
        PreparedStatement statement = con.prepareStatement(sql);
        statement.setString(1, vin);
        statement.setString(2, serial);
        statement.setString(3, make);
        statement.setString(4, model);
        statement.setInt(5, 10);
        statement.setInt(6, 17);
        statement.setString(7, status);
        System.out.println(statement.toString());

        int rowsInserted = statement.executeUpdate();
        if (rowsInserted > 0) {
            System.out.println("A new user was inserted successfully!");
        }
    } catch (Exception ex) {
        System.out.println(ex);
    }

这是导致的错误

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' status) VALUES ('dfg', 'dfgfg', 'fg', 'sd564', 10, 17, 'dsf')' at line 1

我是无知的。跟我没有给表中的主键“id”列传值有关系吗?

最佳答案

reg.no. 不是有效的列名称。如果你真的需要使用它,你应该引用它:

INSERT INTO vehicle (vin, serial, make, model, year, `reg.no.`, status) 
-- Here ---------------------------------------------^-------^
VALUES (?, ?, ?, ?, ?, ?, ?)";

关于java - JDBC 准备语句语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46994255/

相关文章:

java - IPsec 在 Java 中的实践

java - 对象到 SQL 和 SQL 到对象

mysql - Delphi Firemonkey XE8 - 如何使用 DataSnap 正确发送/接收图像

python - 我们如何为 Pyspark Dataframe 列中最后一次出现的值设置标志

java - 在一个变量中存储许多不同的字符串

mysql - 如何根据 SUM 获得排名?

mysql - Crystal Report 13在VS 2010中提示数据库登录

mysql - 如何设置两个MySQL数据字段,使其中一个可以为空,但不能同时为空?

php - 多个 Inner Join 删除属性

java - 了解 Java 固定线程池