2012-09-25 1 views
-1
지금까지 나는 다음과 같은 연결 문자열을 사용하고 최대

다음 MDF 파일이 EXE와 같은 디렉토리에 있기 때문에 자체를 실행하고,이 디렉토리는, 내가 지금 변경할 수 있기 때문에, 그러나동일한 C# 문자열 할당에서 @ 기호와 문자열 변수를 어떻게 사용합니까?

public static String connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Ahmad\documents\visual studio 2010\Projects\DBtestApp1\DBtestApp1\TestDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

문제는이 이와 같은 문자열 할당이 작동하지 않습니다 .. Directory.GetCurrentDirectory()을 사용하여 현재 디렉토리를 검색했다 :

connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=\"" + currentDirectory + "TestDB.mdf\";Integrated Security=True;Connect Timeout=30;User Instance=True";

여기서 currentDirectory의 출력은 Directory.GetCurrentDirectory()입니다.

그래서 해결책은 무엇입니까?

+0

'static' 필드를 할당하려고합니까? 어디에서 그렇게하고 있니? 몇 가지 코드를 게시하십시오. – Jon

+0

정의 "작동하지 않습니다"... 컴파일러 오류가 발생합니까? – HaemEternal

답변

1

이것은 실제로 작동해야하지만 반환 값 Directory.GetCurrentDirectory()에 따라 경로가 손상되었을 수 있습니다.

string DbFile = Path.Combine(Directory.GetCurrentDirectory(), "TestDB.mdf"); 

하는 당신은 다음에 할 수 있어야합니다

하는 대신 문자열 내에서 경로을 연결, 당신은 연결된 할 부분 사이에 추가/실종 백 슬래시를 처리하는, 이것에 대한 System.IO 내부에 설치 Path.Combine()를 사용한다 단순히뿐만 아니라 String.Format()을 사용하여 수행 할 수있는 전체 연결 문자열이 문자열을 추가 :이 시도하지 않은

string connectionString = String.Format(@"...AttachDbFilename={0};Integrated...", Path.Combine(Directory.GetCurrentDirectory(), "TestDB.mdf")); 

하지만, 그것은 단지사용하여 작동하지합니다 파일 이름으로? 아니면 절대 경로 여야합니까?

0

당신은 항상 그것을 App_Data 폴더 (이상적으로 상주해야하는 장소)에 넣고 이와 같이 부를 수 있습니다.

Data Source=|DataDirectory|\TestDB.mdf;