繁体   English   中英

执行后MS Access DB不保存更改(C#)

[英]MS Access DB doesnt save changes after execution (C#)

我有以下用于使用访问数据库的代码

 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();

此时行值为1,当我在之后进行选择查询时,插入的行可用。 当程序结束时出现问题:在进一步的执行中,行不再存在。

我试过交易

OleDbTransaction transaction = con.BeginTransaction();
command.Transaction = transaction;
transaction.Commit();

并以这种方式使用DataSet和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目录中的数据库,因此看起来没有保存。

MS Visual Studio将Access DB构建到产品中。 ---产品位于bin目录中。 ---要通过应用程序查看对数据库的任何和所有更改,请使用此项当您最初将数据库添加到项目时,它将设置为始终在构建时更新产品。 这可能是一件好事,但我觉得它很烦人。 为了解决这个问题:从解决方案资源管理器中选择MS Access DB,按F4转到它的属性,将“复制到输出目录”字段更改为“如果更新则复制”而不是“始终”。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM