2016-11-18 3 views
0

OLE DB를 사용하는 C#에서 MS Access 데이터베이스를 사용하려고하지만 데이터베이스를로드 할 때마다 이전 데이터가 유지되지 않습니다. 내가 임의로 생성 된 ID와 이름을 사용하는 테스트 목적으로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(); 

:

이 내 코드입니다. MS Access에서 데이터베이스를 검사하면 매번 데이터를 덮어 씁니다. 내가 놓친 게 있니?

나는 테이블을 만들기위한 코드를 사용은 Visual Studio에서 존재하는

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에서 응용 프로그램을 시작할 때마다 Database.accdb의 작업 복사본이 프로토 타입 버전으로 완전히 대체됩니다.

그래서,이 솔루션은 (또는 "복사하지 마십시오")

+0

고마워, 나는 그것에 대해서 생각조차하지 않았다. – Mrten