title: C# - Syntax Error in UPDATE Statement
body: <p>I'm trying to update a database using C#, but I get the error: "Syntax error in UPDATE statement". I've looked around for other examples of this error, and found plenty, but every one is different. A lot of things can cause this error, and I just can't put my finger on this one.</p>
  
  <pre><code>query = String.Format(@"UPDATE PAYMENT 
                      SET MONTANT={0}, TYPE='4-Comptant',note='PPA',flag='O', date='{2:yyyyMMdd}'       
                      WHERE num_payment={1}", -payment, id, dt);
                      daUpdate.UpdateCommand.CommandText = query;
                      daUpdate.UpdateCommand.ExecuteNonQuery();  //update the table in the database
  </code></pre>
  
  <p>In debug mode, this is what the string ends up looking like:</p>
  
  <pre>
  UPDATE PAYMENT 
                                                  SET MONTANT=-390, TYPE='4-Comptant',note='PPA',flag='O', date='20120601'
                                                  WHERE num_payment=8
  </pre>
  
  <p>In the database, num_payment is a long integer and a primary key. MONTANT is a double, everything else is text. </p>
  
  <p>Edit: Following people's advice, I've modified things a bit, but I'm still getting the same error. Here's what it looks like now: </p>
  
  <pre><code>                    OleDbCommand cmd = _con.CreateCommand();
                      cmd.CommandText = @"UPDATE PAYMENT 
                      SET MONTANT=@montant, [TYPE]='4-Comptant',note='PPA',flag='O', [date]=@theDate 
                      WHERE num_payment=@numPayment";
  
                      cmd.Parameters.AddWithValue("@montant", -payment);
                      cmd.Parameters.AddWithValue("@theDate", String.Format("{0:yyyyMMdd}", dt));
                      cmd.Parameters.AddWithValue("@numPayment", id);
                      cmd.ExecuteNonQuery();
  </code></pre>
  
  <p>The debug output looks the same
  as before, except that now I see '@something' instead of the real value.</p>