我的PreparedStatement有問題。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();
}
}
這是我得到一個錯誤:
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
我不知道什麼是錯我的查詢。 ColumnNames可以,函數參數也可以。
我試着加入「」的列名(這樣的:「姓」),但它仍然無法正常工作......
編輯:
增加空格沒有幫助。
"INSERT INTO users (FirstName, LastName, Login, Password, AccountNumber, Ballance, Question, Answer) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
,仍然給出了同樣的錯誤
確定的列名是'Ballance' (用兩個「l」拼寫)? – GriffeyDog
通常它有助於調試代碼,在創建準備語句後放置一個斷點。然後,您可以在查詢編輯器中複製/粘貼查詢來找出錯誤。現在,我可以看到在INSERT語句中缺少空格和paranthesis。 – Kerem
與錯誤無關:爲什麼要投射'PreparedStatement'?沒有必要(我假設你正在轉換到MySQL實現類)。 –