MS Access:更新查询没有错误但不执行任何操作
MS Access: Update query has no errors but does nothing
使用此代码更新记录
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) { }
}
但是记录没有更新。我没有错误。该记录存在于数据库中。怎么回事?
我不知道为什么,但您必须按照它们在查询字符串中出现的顺序添加查询参数。所以翻转这两行
cmd.Parameters.Add(new OleDbParameter("@id", item.Id));
cmd.Parameters.Add(new OleDbParameter("@name", item.Name));
至
cmd.Parameters.Add(new OleDbParameter("@name", item.Name));
cmd.Parameters.Add(new OleDbParameter("@id", item.Id));
使用此代码更新记录
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) { }
}
但是记录没有更新。我没有错误。该记录存在于数据库中。怎么回事?
我不知道为什么,但您必须按照它们在查询字符串中出现的顺序添加查询参数。所以翻转这两行
cmd.Parameters.Add(new OleDbParameter("@id", item.Id));
cmd.Parameters.Add(new OleDbParameter("@name", item.Name));
至
cmd.Parameters.Add(new OleDbParameter("@name", item.Name));
cmd.Parameters.Add(new OleDbParameter("@id", item.Id));