SQL删除和更新未删除和更新

时间:2013-05-23 00:46:01

标签: c# sql ms-access oledb

我使用SQL命令编写了一组代码,通过C#程序删除和更新Access记录。这是一组代码:

  

更新

OleDbCommand cmd = new OleDbCommand("UPDATE Available SET Status = 'AVAILABLE' WHERE AvailableID = ?", cnn);
cmd.Parameters.Add(new OleDbParameter { Value = id.AvailableID });
cmd.CommandType = CommandType.Text;
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
  

删除

OleDbCommand cmd = new OleDbCommand("DELETE FROM Log WHERE LogID = ?", cnn);
cmd.Parameters.Add(new OleDbParameter { Value = l.LogID });
cmd.CommandType = CommandType.Text;
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();

该程序是可执行的。当我尝试删除和更新记录时,更新记录尚未更新,删除记录仍然存在。

enter image description here

按删除按钮将删除日志中的记录并将产品更新为“可用”。但是,状态没有改变,记录也没有删除。

enter image description here

enter image description here

我错过了什么吗?每次交易完成后我都会刷新。

1 个答案:

答案 0 :(得分:1)

这很奇怪。以下是我的建议:

  1. 确认您不会在某处意外吞下错误。您可以通过单步执行代码并验证它不会跳转到catch处理程序来完成此操作。请记住,这可能是远离您发布的代码位置的其他地方。只是取决于它是如何设置的。
  2. 通过使用LogID对整个查询进行硬编码,验证参数是否正确。尽管使用它们更好,但参数有时会以您不期望的方式运行。自从我使用动态SQL以来,已经有一段时间了,但我发现你的代码没有任何问题。
  3. 另外,我建议切换到ORM。动态SQL很难在大型项目中进行管理,因此即使项目很小,也最好能够熟悉它。如果您将应用程序移植到将来使用MSSQL数据库,它还会处理可能存在的任何语法差异。我个人推荐nHibernate。