2014-02-01 5 views
0

Я делаю успешное обновление в таблице, но по некоторым причинам поля находятся в перепутанной позиции. Работа на Visual Studio 2010 C# с базой данных MS Access 2007.Обновить запрос: значения обновляются в неправильных столбцах

вот мой код

 OleDbCommand cm = new OleDbCommand(); 
     cm.Connection = AccessConnection(); 

     cm.Parameters.AddWithValue("vContactId", c.ContactId); 
     cm.Parameters.AddWithValue("vFirstName", c.FirstName); 
     cm.Parameters.AddWithValue("vLastName", c.LastName); 
     cm.Parameters.AddWithValue("vAddress", c.Address); 
     cm.Parameters.AddWithValue("vCity", c.City); 
     cm.Parameters.AddWithValue("vState", c.State); 
     cm.Parameters.AddWithValue("vCountry", c.Country); 
     cm.Parameters.AddWithValue("vPinCode", c.PinCode); 
     cm.Parameters.AddWithValue("vMobilePhone", c.MobilePhone); 
     cm.Parameters.AddWithValue("vFax", c.Fax); 
     cm.Parameters.AddWithValue("vOfficePhone", c.OfficePhone); 
     cm.Parameters.AddWithValue("vHomePhone", c.HomePhone); 
     cm.Parameters.AddWithValue("vCompany", c.Company); 
     cm.Parameters.AddWithValue("vDesignation", c.Designation); 
     cm.Parameters.AddWithValue("vEmail", c.Email); 
     cm.Parameters.AddWithValue("vNotes", c.Notes); 
     cm.Parameters.AddWithValue("vCategoryId", c.CategoryId); 
     cm.Parameters.AddWithValue("vDtUpdated", c.dtUpdated); 
     cm.Parameters.AddWithValue("vTitle", c.title); 

     string q = "UPDATE tblContacts SET FirstName = vFirstName, LastName = vLastName, Address = vAddress, City = vCity, " + 
        "State = vState, Country = vCountry, PinCode = vPinCode, MobilePhone = vMobilePhone, Fax = vFax, " + 
        "OfficePhone = vOfficePhone, HomePhone = vHomePhone, Company = vCompany, Designation = vDesignation, " + 
        "Email = vEmail, Notes = vNotes, DtUpdated = vDtUpdated, CategoryId = vCategoryId, Title = vTitle" + 
        " WHERE ContactId=vContactId"; 
     cm.CommandText = q; 

     if (!Exist(c)) 
     { 
      cm.Connection.Open(); 
      cm.ExecuteNonQuery(); 
      cm.Connection.Close(); 
     } 

Что я делаю неправильно здесь?

ответ

1

OleDb игнорирует имена параметров. Все, что он распознает, - это порядок, в котором параметры появляются в CommandText. (ref: here)

Вам необходимо изменить порядок операторов .AddWithValue, чтобы точно соответствовать порядку, в котором параметры отображаются в CommandText.

Смежные вопросы