C# OleDbCommand.ExecuteOnQuery()不在ms access数据库中保存更改
我有C# OleDbCommand.ExecuteOnQuery()不在ms access数据库中保存更改,c#,.net,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.P
.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();
}
}
我从数据库中获取数据,在gui程序中对其进行更改,然后将其保存在数据库中。更改会保存,但不会保存在数据库中(我不知道在哪里),所以当我运行程序时,更改数据,关闭程序,然后再次运行-更改仍然存在,但当我打开数据库时(不在程序中),不会保存任何更改,然后再次运行-所有更改都会消失。PS:当我提交更改,然后多次运行程序时,所有更改也会消失,在(3-4次运行)之后,很可能update语句的WHERE子句没有找到任何要更新的记录
update语句的WHERE子句很可能没有找到任何要更新的记录
当我们在VS的项目根目录中添加
.mdb
时,当更改结构时,VS默认删除调试文件夹中的.mdb
文件并替换新文件;现在您可以更改此默认值:
1-右键单击.mdb
文件并选择选项
2-当我们在VS的项目根目录中添加
.mdb
时,将复制到输出目录
设置为不复制,当更改结构时,VS默认删除调试文件夹中的.mdb
文件并替换新文件;现在您可以更改此默认值:
1-右键单击.mdb
文件并选择选项
2-将复制到输出目录
设置为不复制
是否确定。调试文件夹中不替换mdb文件?(运行应用程序时)能否显示连接字符串?特别是,你要打开的数据库在哪里?@hamidrezamansouri-你可以把它作为一个答案发布。这是一个多副本,但查找起来太麻烦了。@hamid reza mansouri,事实上是这样,在调试文件夹中有一个已更改的db,因此,正如我所说的,它将所有更改保存在该文件夹中,但从另一个connectionString=“provider=Microsoft.Jet.OLEDB.4.0;”+“data source=Resources\\myDataBase.mdb”获取所有数据
您确定调试文件夹中没有替换.mdb文件吗?(运行应用程序时)您能显示您的连接字符串吗?特别是,你要打开的数据库在哪里?@hamidrezamansouri-你可以把它作为一个答案发布。这是一个多重复制,但查找起来太麻烦了。@hamid reza mansouri,实际上是这样,在调试文件夹中有一个已更改的db,所以当我点击时,它将所有更改保存在该文件夹中,但从另一个connectionString=“provider=Microsoft.Jet.OLEDB.4.0;”“+”数据源=Resources\\myDataBase.mdb”
“然后再次运行-更改保持”=所以WHERE看起来是OK的。“然后再次运行-更改保持”=所以WHERE看起来是OK的。