[SQL] SQL Express를 연결 문자열 : 응용 프로그램 위치에 MDF 파일 위치에 상대적인
SQLSQL Express를 연결 문자열 : 응용 프로그램 위치에 MDF 파일 위치에 상대적인
나는 C #에서 단위 테스트 프로젝트의 일환으로 SQL 익스프레스의 데이터베이스를 사용하고 있습니다. 내 데이터베이스는 여기에 있습니다 :
./Databases/MyUnitTestDB.mdf
차라리 내 연결 문자열로 정의를 갖는 것보다의 app.config에서 상대 경로 또는 변수를 사용하고 싶습니다 :
AttachDbFilename=C:\blah\blah\blah\yea\yea\yea\MyApplication\Databases\MyUnitTestDB.mdf
DataDirectory를 | 내가의 사용을 보았다 | 하지만이 웹 애플리케이션에만 적용 할 생각에 수정입니까?
나는 응용 프로그램이 호스팅 SQL 데이터베이스를 사용하여 생산에서와 같이 응용 프로그램 구성 파일에서이를 제어 할.
해결법
-
==============================
1.감사합니다 모든 사람이, 당신의 응답의 조합을 사용했다.
감사합니다 모든 사람이, 당신의 응답의 조합을 사용했다.
다음과 같이 내 app.config 파일에서 내 연결 문자열이 정의된다
<add name="MyConnectionString" connectionString="Server=.\SQLExpress;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Database=MyDatabaseForTesting;Trusted_Connection=Yes;" />
내 단위 테스트 클래스에서 나는 다음을 사용하여 DataDirectory를 속성을 설정
[TestInitialize] public void TestInitialize() { AppDomain.CurrentDomain.SetData("DataDirectory", System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Databases")); // rest of initialize implementation ... }
-
==============================
2.예, | DataDirectory를 | 웹 응용 프로그램은 웹 응용 프로그램의 App_Data 디렉터리를 선택합니다.
예, | DataDirectory를 | 웹 응용 프로그램은 웹 응용 프로그램의 App_Data 디렉터리를 선택합니다.
하지 않은 웹 응용 프로그램에서 .NET 프레임 워크에 따라, 그것은 사용되며 AppDomain.SetData를 사용하여 변경 될 수 있습니다
하지만 당신은 연결을 만들 수있는 다른 두 가지 가능성이있다 :
1 .- 상대 경로를 사용합니다 :
String con ="... AttachDbFilename=Databases\MyUnitTestDB.mdf ... ";
응용 프로그램 경로를 얻을 문자열에 추가 2 .-. C #을 Windows 응용 프로그램에서 당신은 Application.StartupPath을 사용할 수 있습니다
String con= " ... AttachDbFilename=" + Application.StartupPath + "\Databases\MyUnitTestDB.mdf ... ";
응용 프로그램 유형 또는 실행 모드에 따라 서로 다른 특성을 얻었다. 전의:
당신은 여기에 다른 연결 문자열 옵션에 대한 자세한 내용을 찾을 수 있습니다 http://www.connectionstrings.com/sql-server-2005
-
==============================
3.나는 통해이 일을 마지막으로이에서 단서를 가지고 인터넷 검색 하루 종일 보냈다
나는 통해이 일을 마지막으로이에서 단서를 가지고 인터넷 검색 하루 종일 보냈다
여기 내 솔루션입니다 : 1. | DataDirectory를 | 연결 문자열
<add name="NorthwindConnectionString" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDbFilename=|DataDirectory|\Northwind.mdf;User Instance=True" providerName="System.Data.SqlClient" />
ClassInitialize에서 삭제 2. DataDirectory를
[ClassInitialize()] public static void MyClassInitialize(TestContext testContext) { string baseDir = AppDomain.CurrentDomain.BaseDirectory; int index = baseDir.IndexOf("TestResults"); string dataDir = baseDir.Substring(0, index) + System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; AppDomain.CurrentDomain.SetData("DataDirectory", dataDir); }
-
==============================
4.나는 Windows가 C # 3.0 VS2010로 앱을 형성하는 간단한 짓고 있어요. 또한 SQL Express를 2008 RC2를 사용하여.
나는 Windows가 C # 3.0 VS2010로 앱을 형성하는 간단한 짓고 있어요. 또한 SQL Express를 2008 RC2를 사용하여.
아무 것도 변경하지 않고 단독으로 연결 문자열에 MyDb.mdf | DataDirectory를 | :를 내가 사용할 수 있어요. | DataDirectory를 | 내 .exe 파일의 위치를 가리 킵니다.
내가 VS와 SQL 버전을 지정하고있어 그 이유는 그래서 나는이 당신의 모든 시도 할 첫 번째 일이 될 것이라고 생각합니다. 아니면 그것은 C #을 3.0의 새로운 기능입니다.
내 완전한 연결 문자열 :
"Server=.\SQLExpress;AttachDbFilename=|DataDirectory|App_Data\ThumbsUpPlayer.mdf;Database=ThumbsUpPlayer;Trusted_Connection=Yes;"
내가 그 폴더에있는 DB를 사용 해요 때문에 나는 내 응용 프로그램에 "App_Data"폴더를 추가 한 주, 폴더가 VS.에서 인식되지 않습니다
-
==============================
5.나는 무엇에 대해 여기에 비주얼 스튜디오를 가지고,하지만하지 않습니다
나는 무엇에 대해 여기에 비주얼 스튜디오를 가지고,하지만하지 않습니다
using System.IO; using System.Windows.Forms; string appPath = Path.GetDirectoryName(Application.ExecutablePath); AttachDBFilme = appPath + "\\MyUnitTestDB.mdf"
-
==============================
6.나는 다음을했다. 희망이 사람을 도움이됩니다.
나는 다음을했다. 희망이 사람을 도움이됩니다.
AppDomain.CurrentDomain.SetData("DataDirectory", System.IO.Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory + "../../App_Data"));
-
==============================
7.
SqlConnection con="Server=.\SQLExpress;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Database=MyDatabaseForTesting;Trusted_Connection=Yes;" ;
from https://stackoverflow.com/questions/3500829/sql-express-connection-string-mdf-file-location-relative-to-application-locatio by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 MySQL의에서 삭제 캐스케이드에 사용합니까? (0) | 2020.03.24 |
---|---|
[SQL] 포스트 그레스에서 LIKE와의 차이 ~ (0) | 2020.03.24 |
[SQL] 가장 좋은 방법은 MySQL의 주입 및 크로스 사이트 스크립팅에 대한 방어 (0) | 2020.03.24 |
[SQL] SQLite는 유효 테이블 이름은 무엇입니까? (0) | 2020.03.24 |
[SQL] MySQL은 절에 의해 노동 조합 및 순서를 사용하여 (0) | 2020.03.24 |