Search code examples
c#ms-accessoledb

MS Access: Update query has no errors but does nothing


Using this code to update a record

var query = "UPDATE myTable SET name = @name where id = @id";
using (DbCommand cmd = new OleDbCommand(query, connection))
{
    try
    {
        cmd.Parameters.Add(new OleDbParameter("@id", item.Id));
        cmd.Parameters.Add(new OleDbParameter("@name", item.Name));            
        cmd.ExecuteNonQuery();
    }
    catch (Exception e)   {   }
}

But the record does not get updated. I get no error. The record exists in the DB. What is going on?


Solution

  • I don't know why but you have to add the parameters of your query in the order they appear in your query string. So flip these two lines

    cmd.Parameters.Add(new OleDbParameter("@id", item.Id));  
    cmd.Parameters.Add(new OleDbParameter("@name", item.Name)); 
    

    to

    cmd.Parameters.Add(new OleDbParameter("@name", item.Name)); 
    cmd.Parameters.Add(new OleDbParameter("@id", item.Id));