OLE DB覆盖旧数据库

时间:2016-11-18 22:26:01

标签: c# .net winforms oledb

我尝试使用OLE DB在C#中使用MS Access数据库,但每次数据库加载时都不会保留旧数据。

这是我的代码:

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Databases\\Database.accdb;Persist Security Info=False;";
OleDbConnection connection = new OleDbConnection(connectionString);
OleDbCommand command = connection.CreateCommand();
command.CommandText = "INSERT INTO test (userID, name) VALUES(?, ?)";
// Setting parameters to random integer and string
command.Parameters.Add(new OleDbParameter("@userID", randomID));
command.Parameters.Add(new OleDbParameter("@name", randomName));
command.ExecuteNonQuery();

出于测试目的,我使用随机生成的ID和名称。如果我在MS Access中检查数据库,则每次都会覆盖数据。我错过了什么吗?

我使用此代码创建表:

OleDbCommand command = connection.CreateCommand();
command.CommandText = "CREATE TABLE test (" +
                         "userID INTEGER NOT NULL," +
                         "name TEXT(20) NOT NULL," +
                         "PRIMARY KEY(userID)" +
                         ")";
command.ExecuteNonQuery();

1 个答案:

答案 0 :(得分:2)

这通常与Visual Studio中存在的Database.accdb文件的属性相关联。

默认情况下,文件的“复制到输出目录”字段设置为“始终复制”。因此,这意味着每次在Visual Studio中启动应用程序时,它都将完全用原型版本替换Database.accdb的工作副本。

所以,解决方案有点简单......将字段更改为“如果更新则复制”(或“不要复制”)