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")
我正在尝试使用 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")