OLE DB 覆盖旧数据库

OLE DB overwriting old database

我正在尝试使用 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 中检查数据库,数据每次都会被覆盖。我错过了什么吗?

我使用此代码创建 table:

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

这通常与 Database.accdb 文件的属性相关联,因为它存在于 Visual Studio。

默认情况下,文件的 "Copy to output directory" 字段设置为 "Copy always"。因此,这意味着每次在 Visual Studio 中启动应用程序时,它都会将 Database.accdb 的工作副本完全替换为原型版本。

所以,解决方案有点简单...将字段更改为 "Copy if newer"(或 "Do not copy")