Простейшая ситуация: таблица в MDB (customerid, customername), класс с методами обновления, вставки, удаления записей. Запросы осуществляются в коде методов с использованием OleDb.
Почему-то не работает Update с параметрами:
public void UpdateCustomer(int cId, string cName)
{
OleDbConnection sqlConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\my.mdb");
String sqlText = "update customers set customername = @customername where (customerid = @customerid)";
OleDbCommand sqlCmd = new OleDbCommand(sqlText, sqlConn);
sqlCmd.CommandType = System.Data.CommandType.Text;
sqlCmd.Parameters.Add(new OleDbParameter("@customerid", OleDbType.Integer));
sqlCmd.Parameters["@customerid"].Value = cId;
sqlCmd.Parameters.Add(new OleDbParameter("@customername", OleDbType.VarChar, 50));
sqlCmd.Parameters["@customername"].Value = cName;
try
{
sqlConn.Open();
object o = sqlCmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception("ошибка метода CustomerDB.UpdateCustomer(...): " + ex.Message);
}
finally
{
sqlConn.Close();
}
}
Исключения не возникает, просто ничего не происходит.
Если прописать так:
String sqlText = "update customers set customername = 'new_name' where (customerid = @customerid)";
то сработает, видимо проблема скрыта в параметре, но почему? неверно указан тип? менял и тип и название параметра — не помогло
вставка, удаление работают (с параметрами)