C# MS Access数据库在执行后不保存更改(C)

C# MS Access数据库在执行后不保存更改(C),c#,ms-access,ado.net,insert,oledb,C#,Ms Access,Ado.net,Insert,Oledb,我有以下使用access数据库的代码 OleDbConnection con = new OleDbConnection(myproject.Properties.Settings.Default.myDBConnectionString); con.Open(); OleDbCommand command = new OleDbCommand("INSERT INTO components (name) VALUES (@p_col1)", con); command.Paramete

我有以下使用access数据库的代码

 OleDbConnection con = new OleDbConnection(myproject.Properties.Settings.Default.myDBConnectionString);
 con.Open();
 OleDbCommand command = new OleDbCommand("INSERT INTO components (name) VALUES (@p_col1)", con);
 command.Parameters.Add("@p_col1", OleDbType.VarChar).Value = "test row";
 int rows = command.ExecuteNonQuery();
此时,rows值为1,在执行select查询之后,插入的行可用。当程序完成时,问题就出现了:在进一步的执行中,该行不再存在

我尝试过交易

OleDbTransaction transaction = con.BeginTransaction();
command.Transaction = transaction;
transaction.Commit();
以这种方式使用数据集和ADO

//... add row to dataset ...
OleDbDataAdapter sda = new OleDbDataAdapter("select * from components", con);
OleDbCommandBuilder cb = new OleDbCommandBuilder(sda);

sda.Update(ds.Components); //tried with ds.Components.AcceptChanges(); before and after this line
但在每种情况下,我都有同样的问题,似乎插入查询并不是在真实的数据库中完成的。你知道为什么会这样吗


提前感谢

数据库是否在您的bin目录中?这也是你项目的一部分吗?我看到过这样的情况:每次构建时,它都会用项目目录中的数据库覆盖bin目录中的数据库,因此似乎没有保存任何内容。

数据库是否在bin目录中?这也是你项目的一部分吗?我看到过这样的情况:每次构建时,它都会用项目目录中的数据库覆盖bin目录中的数据库,因此似乎没有保存任何内容。

可能有多个数据库,而您没有插入到您认为要插入的数据库中

可能有多个数据库,而您没有插入到您认为要插入的数据库

MS Visual Studio将Access DB构建到产品中。 -该产品位于您的bin目录中。 -要通过应用程序查看对数据库的任何和所有更改,请使用此项 当您最初将DB添加到项目中时,它被设置为总是在生成时更新产品。 这可能是件好事,但我觉得很烦人。 要解决此问题,请执行以下操作: 从解决方案资源管理器中选择MS Access数据库, 点击F4进入其属性,
将字段Copy改为Output Directory,以便在更新时进行复制,而不是始终进行复制。

MS Visual Studio将Access DB构建到产品中。 -该产品位于您的bin目录中。 -要通过应用程序查看对数据库的任何和所有更改,请使用此项 当您最初将DB添加到项目中时,它被设置为总是在生成时更新产品。 这可能是件好事,但我觉得很烦人。 要解决此问题,请执行以下操作: 从解决方案资源管理器中选择MS Access数据库, 点击F4进入其属性,
将字段Copy改为Output Directory,以便在较新时进行复制。

您确定查看的是正确的数据库….?因此,在使用参数执行INSERT语句后,数据在表中可见?您确定查看的是正确的数据库….?在使用参数执行INSERT语句后,数据在表中可见?每次构建时,我都会用项目中的数据库覆盖bin目录中的数据库。这不是一个时髦的解决方案,但更改了connectionString的DataSource属性,使其指向当前工作的项目目录中的数据库。每次构建时,我都会用项目中的数据库覆盖bin目录中的数据库。这不是一个时髦的解决方案,但更改了connectionString的DataSource属性,使其指向当前工作的项目目录中的数据库。