2016-11-18 71 views
0

我试图使用使用OLE DB在C#中的MS Access数据库,但每一次的数据库负载不保留旧的数据。OLE DB覆盖旧数据库

这是我的代码:

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

目前尚不清楚。每次数据库加载时,你的意思是什么_? – Steve

+0

@Steve我的意思是,每次我打开上面的代码数据库连接 – Mrten

+0

@LarsTech错误,我做的是,在实际的代码 – Mrten

回答

2

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

默认情况下,该文件的“复制到输出目录”字段设置为“始终复制”。因此,这意味着,每一次推出Visual Studio中的应用,将彻底与原型版本替换Database.accdb的工作副本。

所以,解决的办法是有点简单...更改字段为“复制,如果新”(或“不要复制”)

+0

谢谢,我甚至没有想到这一点...... – Mrten