PreparedStatement - 语法错误

时间:2015-07-21 15:09:58

标签: java sql jdbc

我的PreparedStatement有问题。

这是我将新用户添加到MySQL数据库的功能:

public static void createUser(String fn, String sn, String log, String pass, int accNum, String qst, String answ) {
        try {
            Connection conn = (Connection) mySQLConnector.getConnection();
            PreparedStatement ps = (PreparedStatement) conn.prepareStatement(
                      "INSERT INTO users"
                      + "(FirstName, LastName, Login, Password, AccountNumber, Ballance, Question, Answer)"
                      + "VALUES (?, ?, ?, ?, ?, ?, ?, ?");
            ps.setString(1, fn);
            ps.setString(2, sn);
            ps.setString(3, log);
            ps.setString(4, pass);
            ps.setInt(5, accNum);
            ps.setDouble(6, 0);
            ps.setString(7, qst);
            ps.setString(8, answ);

            ps.executeUpdate();
            ps.close();
        } 
        catch (SQLException e) {
            e.printStackTrace();
        }
    }

这是我得到的错误:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法

我不知道我的查询有什么问题。 ColumnNames没问题,函数参数也没问题。

我尝试在列名称中添加''(就像那样:'FirstName'),但我仍然无效......

修改

添加空格没有帮助。我甚至在一行中做到了:

  

“INSERT INTO用户(FirstName,LastName,登录,密码,   AccountNumber,Ballance,Question,Answer)VALUES(?,?,?,?,?,?,   ?,?)“

仍然会出现同样的错误

3 个答案:

答案 0 :(得分:2)

你缺少空格。将SQL更改为:

"INSERT INTO users " // space added
 + "(FirstName, LastName, Login, Password, AccountNumber, Ballance, Question, Answer) " // space added
 + "VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
编辑:我错过了VALUES条款末尾缺少的结束括号。

答案 1 :(得分:2)

我认为你只需要添加空格和括号

PreparedStatement ps = (PreparedStatement) conn.prepareStatement(
                      "INSERT INTO users "
                      + "(FirstName, LastName, Login, Password, AccountNumber, Ballance, Question, Answer) "
                      + "VALUES (?, ?, ?, ?, ?, ?, ?, ?)");

答案 2 :(得分:1)

解决此问题:

 "VALUES (?, ?, ?, ?, ?, ?, ?, ?");

到此:

 "VALUES (?, ?, ?, ?, ?, ?, ?, ?)";