Java 中的 SQL 语法错误

Posted

技术标签:

【中文标题】Java 中的 SQL 语法错误【英文标题】:SQL Syntax Error in Java 【发布时间】:2013-06-11 13:16:28 【问题描述】:

我正在 netbeans/windows 7 上使用 java 开发应用程序。我试图使用 SQL 将数据插入到带有 PreparedStatement 的数据库中。所以这是我的代码;

private void addInfoActionPerformed(java.awt.event.ActionEvent evt)                                         
    Connection conn;    
    PreparedStatement pst;
    String url = "jdbc:derby://localhost:1527/records";
    String SQL_INSERT = "INSERT INTO records"+
                "VALUES(?,?,?)";
    String name, surname, number;
    try 
        conn = DriverManager.getConnection(url, "system", "app");
        System.out.println("connected to db");
        pst = conn.prepareStatement(SQL_INSERT);
        name = nameField.getText();
        surname = surnameField.getText();
        number = numberField.getText();
        System.out.println("got data from textfields");
        pst.setString(1, name);
        pst.setString(2, surname);
        pst.setString(3, number);
        System.out.println("variables set");
        pst.executeUpdate();
        System.out.println("sql command executed");
        pst.close();
        conn.close();
     catch (SQLException ex) 
        Logger.getLogger(addition.class.getName()).log(Level.SEVERE, null, ex);
    

  

但是我遇到了这样的错误;

java.sql.SQLSyntaxErrorException:语法错误:遇到“?”在 第 1 行,第 27 列。

我的表的名称是记录,它有三个命名的列;姓名、姓氏和号码。正如我从 println 行中可以理解的那样,该行存在问题;

pst = conn.prepareStatement(SQL_INSERT);

或者我创建的 SQL_INSERT 字符串和 SQL 代码错误。我无法弄清楚到底是什么问题。

【问题讨论】:

该错误是 SQL 语法错误,而不是 Java 语法错误。 Derby 没有任何问题,但如果你愿意,可以看看 HSQLDB ......它很快就会在 ver. 2.3.0. 【参考方案1】:

你缺少一个空格

String SQL_INSERT = "INSERT INTO records"+
            "VALUES(?,?,?)";

当你进行连接时,它会产生"INSERT INTO recordsVALUES(?,?,?)"

改成

String SQL_INSERT = "INSERT INTO records"+
            " VALUES(?,?,?)";

【讨论】:

以上是关于Java 中的 SQL 语法错误的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLException:语法错误

从 SAP 获取数据时 MySQL 服务器版本中的 SQL 语法错误

JSP向ACCESS插入记录的报SQL语法错误

java连接sqlserver,提示语法错误

我的 java 程序的 SQL 语法错误

java.sql.SQLException:接近“on”:语法错误问题