2009-04-30 3 views
1

간단한 지속성 계층이 필요한 데스크톱 응용 프로그램을 작성 중입니다. SubSonic에 대해 알아 냈으며 SQLite로 작업 할 수있는 기능이 있습니다. 그러나 사용자의 AppData 폴더에 데이터베이스 파일을 보관해야하며 app.config에 이러한 값을 입력하는 방법을 모릅니다. 절대 경로는 사용하고 싶지 않습니다.SQLite 용 음속 연결 문자열

app.config는 환경 변수에 액세스하거나 응용 프로그램 데이터 폴더를 참조 할 수 있습니까?

답변

1

app.config의 AppData 폴더에 연결 문자열을 지정하는 방법이 없습니다.

하지만 설치하는 동안 또는 응용 프로그램을 처음 실행할 때 구성 파일에 값을 쓰면됩니다.

+0

어떻게 작성 하시겠습니까? – dahpgjgamgan

+0

ConfigurationManager 클래스를 사용하여 구성 파일을 읽고 쓸 수 있습니다. 예 : http://social.msdn.microsoft.com/forums/en-US/winforms/thread/f26d0863-06be-45c1-b42d-e0816dc9eb58/ MSDN docs : http://msdn.microsoft.com /en-us/library/system.configuration.configurationmanager.aspx –

0

APPDATA을 찾는의 "프레임 워크 방법은"Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)를 사용하는

이 플랫폼에 관계없이 올바른 APPDATA 경로를 찾을 것입니다. 당신은 "다음 방금 추가 할 수있는 전체 경로 이름으로 응용 프로그램의 루트를 반환합니다 하나의 언어로,

는 Server.MapPath ("~ ")를 ASP.NET을 사용하는 경우

0

는 여러 가지 방법이 있습니다/app_data "를 사용하면 전체 경로가됩니다.

또는 HttpContext.Current.Request와 HttpContext.Current.Application을 검사하십시오. 같은 폴더를 제공하는 속성이 많이 있습니다 (방금 언급 한 것보다 훨씬 낫습니다) - 응용 프로그램의 루트가됩니다. 전체 경로. 이 모두가 당신이 가상 폴더 및 응용 프로그램이있는 일반 폴더와 응용 프로그램이있는 경우에도 작동해야

참고

그러나이 실행시에만 가능합니다 해당 폴더에 IIS에서 구성, 그래서 할 수 없습니다 app.config에 실제로 언급되어 있습니다. app.config가 상주하는 IE "../App_Data"또는 "/ App_data"에서 relalive 경로를 사용해 볼 수는 있지만 정확한 요구 사항은 확실하지 않습니다.

행운

2

아음속 버전 2.x를 들어 나는의 app.config 연결 문자열을 무시합니다 그냥 데이터베이스와 작업하기 전에 런타임에 설정합니다. 공급자 이름은 물론 마찬가지입니다.

string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"MyApplication\Northwind.db3"); 

DataService.Providers["Northwind"].DefaultConnectionString = 
      String.Format(@"Data Source={0};Version=3;New=False;Connection Timeout=3", dbPath); 
+0

참조 http://stackoverflow.com/questions/2079781/how-can-i-tell-subsonic-2-to-use-a-different-config -파일 – Rory