0

我编写了一组代码,使用 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();

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

在此处输入图像描述

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

在此处输入图像描述

在此处输入图像描述

我错过了什么吗?当每笔交易完成时,我总是刷新。

4

1 回答 1

1

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

  1. 确认您没有在某处意外吞下错误。您可以通过单步执行代码并验证它不会跳转到 catch 处理程序来做到这一点。请记住,这可能位于远离您发布的代码位置的其他地方。只是取决于它是如何设置的。
  2. 通过使用 LogID 对整个查询进行硬编码来验证参数是否正确。尽管使用它们会更好,但参数有时会以您意想不到的方式运行。自从我使用动态 SQL 以来已经有一段时间了,但在我的脑海中,我没有看到您的代码有任何问题。

顺便说一句,我建议切换到 ORM。动态 SQL 在大型项目中很难管理,因此即使您的项目很小,也最好熟悉它。如果您将来移植应用程序以使用 MSSQL 数据库,它还会处理可能存在的任何语法差异。我个人推荐nHibernate。

于 2013-05-23T00:53:19.797 回答