2010-05-11 6 views
0

데이터베이스에 대한 내 연결을 항상 사용할 수 있도록하려는 경우 프로젝트가있는 폴더를 다른 컴퓨터로 이동하면 연결이 자동으로 수행됩니다. 그럼 어떻게이 연결을 바꿀 수 있습니까?데이터베이스 액세스 C# 로컬 디렉터

this.oleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\\Documents and Settings\\Cristi\\Do" + 
       "cuments\\Visual Studio 2008\\Projects\\WindowsApplication3\\bd1.mdb\""; 

??? 프로젝트 디렉토리 등을 읽어야합니다. 나는 모른다. 어떤 아이디어? 감사합니다!

답변

2

액세스 데이터베이스를 프로젝트에 추가하고 파일 속성에서 출력 디렉터리로 복사 속성을 항상 복사 (또는 적절한 경우 복사)로 설정하면 다음과 비슷한 연결 문자열을 사용할 수 있습니다.

this.oleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\".\\bd1.mdb\""; 

데이터베이스가 바이너리와 같은 폴더에 위치하기 때문에 작동합니다.

마찬가지로 실행중인 어셈블리의 위치와 관련하여 데이터베이스에 대한 상대 경로를 사용할 수 있습니다.

+0

예, 이것이 제가하고 싶은 일입니다. 데이터베이스를 프로젝트에 추가했습니다. 어디로 가져 가야합니까? 디버그 폴더에? .sln이 위치해 있습니까? 그리고 이것을 설명하십시오 : "파일 속성은 Copy to Output Directory 속성을 항상 복사 (또는 적절한 경우 복사)로 설정하십시오."를 참조하십시오. 의 파일 속성. mdb? 나는 이해하지 못한다. 고맙습니다! –

+0

어디서나 원하는 곳에 넣을 수 있습니다. 아마도 당신은 프로젝트 폴더 아래에 Data라고 불리는 별도의 폴더에 그것을 보관하고 싶을 것입니다. 파일 속성의 경우 솔루션 탐색기에서 MDB 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 속성 창에서 "Copy to Output Directory"라는 속성을 볼 수 있습니다. 자신의 상황에 적합한 목록을 선택하십시오. –

+0

그러나 프로덕션 응용 프로그램의 경우 프로그램 폴더에 바이너리 폴더가 있지 않습니까? 이것은 일반 사용자와 Vista/Win7의 UAC 사용자 모두에게 읽기 전용 위치이므로 데이터 파일을 저장하지 않으려 고합니다. –

0

연결 문자열에서 상대 경로를 사용하려는 것처럼 들립니다. 이 같은

뭔가 :

this.oleDbConnection1.ConnectionString = 
"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + 
Server.MapPath("~\\MyData\\MyDatabase.mdb"); 

이 응용 프로그램 내에서 /MyData 디렉토리에 해당됩니다. .mdb 파일이 의도적 인 파울 플레이에 표시 될 수 있다는 보안 문제를 염두에 두십시오.

+0

오류 'Server'라는 이름이 현재 컨텍스트에 없습니다. \t Ty (빠른 응답)! –

관련 문제