2012-02-10 12 views
1

Netbeansを使用してテーブル内のフィールドを更新しようとしていますが、2つの条件があります。次のように更新文は次のとおりです。JavaのSQL更新ステートメント

String sql1 = "update tbl_log set Logout_Time =? where Firstname = ? and Check = ?"; 
     try{ 
      pst = conn.prepareStatement(sql1); 
      pst.setString(1, time); 
      pst.setString(2, username); 
      pst.setString(3, "IN"); 
      pst.execute(); 
     }catch(Exception e){ 
      JOptionPane.showMessageDialog(null, e); 
     } 

が、私は次のようなエラーになっています:

com.mysql.jdbc.exceptions.jdbc4.MySQL SyntaxErrorExceptionを:あなたは、あなたのSQL構文でエラーが発生しています。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が1行目の「Check = 'IN'」の近くで使用するようにしてください。

どうすれば解決できますか?

+1

実際には、データベース内の文字列フィールドですか? –

+0

@ Jon'sのアドオンに関する質問:なぜ文字列に時間を格納していますか? ':(' –

答えて

6

「チェック」あなたはバッククォートでの

変更にそれを配置する必要がありますので、予約語である:予約済みのリストについては

String sql1 = "update tbl_log set Logout_Time =? where Firstname = ? and `Check` = ?"; 

を単語は、ここをクリックしてください:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

+0

@PeekaySwitchはい、バックティック...この回答をお読みください –

+0

これはフィールドTime_Logoutを更新していません。 .. :( – Ravi77

+1

@ Ravi77。Logout_Timeの更新に問題がある場合は、その列に間違ったデータ型を使用している可能性があります。例えば、 "Datetime"に変更してください。代わりの解決策:現在の時刻にのみLogout_Timeを設定する場合は、クエリを 'update tbl_log set Logout_Time = NOW()に変更することができます。ここで、Firstname =?と\ pst.setDate(1、time) 'Check \' =? '(すでにLogout_Timeカラムのタイプを" Datetime "に変更していると仮定します)この場合、" time "変数を考える必要はありません。 – Optimist

0

pst.executeUpdate();

とも

を使用してみてくださいはpstPreparedStatementのですか? それにそれを変更しない場合は...

+0

もちろん 'pst'は' PreparedStatement'です;これはConnection#prepareStatement()が返すものです。 –

-1
st.executeUpdate("update reservation set busname='"   + 
        jTextField10.getText() + "',busno='"  + 
        jTextField9.getText() + "',cusname='"  + 
        jTextField8.getText() + "',noofpass='"  + 
        jTextField7.getText() + "',amount='"  + 
        jTextField6.getText() +"' where cusname='" + 
        jTextField8.getText() + "' "); 
関連する問題