2016-11-18 129 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