2016-03-30 6 views
1

コードを実行しようとしていますが、エラーが発生しています。何が問題になる可能性がありますか。エラーは次のとおりです。com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SQL構文にエラーがあります。あなたのMySQLサーバーバージョンに対応するマニュアルをチェックして正しい構文を確認し、 'key' VALUES( 'davis'、 '0704254498'、 '0704254498'、now()、 ' keyは、MySQLでの予約語であるため、1データベーステーブルへのデータの挿入中にエラーが発生しました。

String sql = "INSERT INTO tWebServiceSms(username,mobile,sender_id,time_sent,message_payload,status,key) VALUES(?,?,?,now(),?,?,?)"; 
    PreparedStatement stmt = null; 
    try { 
     stmt = conn.prepareStatement(sql); 
     stmt.setString(1, webServiceSmsOut.getUsername()); 
     stmt.setString(2, webServiceSmsOut.getMobile()); 
     stmt.setString(3, webServiceSmsOut.getSenderId()); 
     stmt.setString(4, webServiceSmsOut.getMessage()); 
     stmt.setInt(5, 0); 
     stmt.setString(6, webServiceSmsOut.getKey()); 
     int affected = stmt.executeUpdate(); 
     return affected == 1; 
    } catch (SQLException e) { 
     Logger.getLogger(WebServiceSmsData.class.getName()).log(Level.SEVERE, "null", e); 
     return false; 
    } finally { 
     if (stmt != null) { 
      try { 
       stmt.close(); 
      } catch (SQLException ex) { 
       Logger.getLogger(WebServiceSmsData.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
    } 

答えて

1

あなたはこのエラーを取得している。どちらの名前を変更したり、 `、その周りkey`をバッククォートを使用しています。

1

単語keyをされたMySQLでの予約語は、識別子を指定する場合は、識別子名として使用する場合は、バッククォート( `)で囲む必要があります。