OleDbCommand.ExecuteNonQuery()不保存ms访问数据库中的更改

我有.mdb数据库,代码如下:

 using (OleDbConnection connection = new OleDbConnection(myConnectionString)) { using (OleDbCommand cmd = connection.CreateCommand()) { cmd.CommandText = "UPDATE myTab SET col2 = @val1 WHERE col1 = @val2"; cmd.Parameters.AddWithValue("@val1", 0); cmd.Parameters.AddWithValue("@val2", -1); cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); } } 

我从db获取数据,在我的gui程序中更改它,然后将其保存在db中。 更改保存,但不在db(我不知道在哪里),所以当我运行程序,更改数据,关闭程序,然后再次运行 – 更改仍然存在,但是当我打开db(不在programm中)时,没有更改保存,再次运行 – 所有更改都消失了。
PS:当我提交更改,然后运行程序几次,所有更改也消失,之后(3-4次运行)

当我们在VS中的项目根目录中添加.mdb时,在更改结构时,VS默认删除调试文件夹中的.mdb文件并替换新文件; 现在你可以改变这种侮辱:

1-右键单击.mdb文件并选择选项

2-设置Copy To Output Directory Do Not Copy

您更新语句的WHERE子句很可能不会找到要更新的任何记录。

http://weblogs.asp.net/stevewellens/archive/2009/10/16/why-sql-updates-fail-three-reasons.aspx