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

时间:2012-10-22 13:50:50

标签: c# .net

我有.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次运行)

2 个答案:

答案 0 :(得分:6)

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

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

2-设置Copy To Output DirectoryDo Not Copy

答案 1 :(得分:1)

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

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