2017-01-21 13 views
-1

jsp形式で入力し、サーブレットを使用してMYSQL Workbenchのテーブルに格納することで、ユーザープロファイルを更新しようとしています。テーブルを更新する際に構文エラーが発生します。複数の列を更新中にMySQL構文エラーが発生しました

ps = (PreparedStatement) con.prepareStatement("UPDATE user SET user_id =?, FName=? , LName=?, City=? , Email=? , Country=? , DOB=?, JobPosition=?, Profile_Picture=? WHERE user_id=123"); 
     ps.setInt(1, UserId); 
     ps.setString(2, Fname); 
     ps.setString(3, Lname); 
     ps.setString(4, City); 
     ps.setString(5, EmailId); 
     ps.setString(6, Country); 
     ps.setDate(7, java.sql.Date.valueOf(DOB)); 
     ps.setString(8, JobPosition); 
     if (inputStream != null) { 
      ps.setBlob(9, inputStream); 
     } 

[EDIT]

エラー:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 ''techquo'.'user' set user_id =123, FName='Default' , LName='Default', City='' ,' at line 1 

これは私のSQLクエリです。私はこれに新しいですし、構文の何が間違っているか把握することはできません。テーブル名と属性の名前は正しいです。私は再確認した。どんな助けもありがとう。ありがとう!

+0

エラーを共有できますか? – Mureinik

+1

あなたの 'UPDATE'ステートメントに' WHERE'句がないことにお気づきましたか?あなたは、MySQLがあなたのテーブルのすべての行を更新するのを知っていますか? –

+0

@ O.Jonesはい、私はそれを認識しています、実際にはこれはプロジェクトの1つのモジュールであり、テーブルはまだ移入されていないので、私はこのモジュールをテストしようとしていました。 –

答えて

0

userは予約済みのキーワードです。ドキュメントhere

はバッククォートでラップしてみてください参照してください。

ps = (PreparedStatement) con.prepareStatement("Update `user` set user_id =?, FName=? , LName=?, City=? , Email=? , Country=? , DOB=?, JobPosition=?, Profile_Picture=?"); 

も、何のwhere句が存在しないため、更新がすべての行に適用されます - おそらく、あなたは何を望んでいません。

+0

私はそれを試みました。それでも同じエラーが表示されます。しかし、ヒントのおかげで、私はユーザーが予約されているキーワードであることに気づいていませんでした。 –

関連する問題