我的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(?,?,?,?,?,?, ?,?)“
仍然会出现同样的错误
答案 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 (?, ?, ?, ?, ?, ?, ?, ?)";