2015-07-21 53 views
-1

我的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 (?, ?, ?, ?, ?, ?, ?, ?)"

,仍然給出了同樣的錯誤

+1

確定的列名是'Ballance' (用兩個「l」拼寫)? – GriffeyDog

+0

通常它有助於調試代碼,在創建準備語句後放置一個斷點。然後,您可以在查詢編輯器中複製/粘貼查詢來找出錯誤。現在,我可以看到在INSERT語句中缺少空格和paranthesis。 – Kerem

+0

與錯誤無關:爲什麼要投射'PreparedStatement'?沒有必要(我假設你正在轉換到MySQL實現類)。 –

回答

2

你缺少空間:我甚至在一條線做到了。將您的SQL更改爲:

"INSERT INTO users " // space added 
+ "(FirstName, LastName, Login, Password, AccountNumber, Ballance, Question, Answer) " // space added 
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); 

編輯︰我錯過了VALUES子句末尾缺少的左括號。

+0

仍然無法正常工作。我甚至在一行中寫道:「INSERT INTO用戶(名字,姓氏,登錄名,密碼,帳號,平衡,問題,答案)VALUES(?,?,?,?,?,?,?,?)」給出相同的錯誤 –

2

我想你只需要加空格和支架

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

修復此:

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

這樣:

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