[c#] SqlConnectionStringBuilder를 사용하여 연결 문자열에서 데이터베이스 이름을 얻는 방법

문자열 조작을 사용하여 연결 문자열을 분할하고 서버, 데이터베이스, UID 및 암호를 얻고 싶지 않습니다.

다음 링크를 읽고 받아 들인 대답을 읽었습니다. 연결 문자열에서 사용자 ID와 암호를 얻는 가장 좋은 방법이라는 것을 알았습니다.하지만 데이터베이스 이름은 어떻습니까?

연결 문자열에서 사용자 이름과 암호를 얻는 올바른 방법은 무엇입니까?

SqlConnectionStringBuilder를 사용하여 연결 문자열에서 데이터베이스 이름을 얻는 방법. (DataSource가 서버 이름입니까?)



답변

InitialCatalog 속성에 대한 MSDN 설명서를 참조하십시오 .

연결과 관련된 데이터베이스의 이름을 가져 오거나 설정합니다.

이 속성은 연결 문자열 내의 “초기 카탈로그”및 “데이터베이스”키에 해당합니다.


답변

공급자 별 ConnectionStringBuilder 클래스 (적절한 네임 스페이스 내)를 사용하거나 System.Data.Common.DbConnectionStringBuilder필요한 경우 연결 문자열 개체를 추상화 할 수 있습니다. 찾고있는 정보를 지정하는 데 사용되는 공급자 별 키워드를 알아야하지만 SQL Server 예제의 경우 다음 두 가지 중 하나를 수행 할 수 있습니다.

System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);

string server = builder.DataSource;
string database = builder.InitialCatalog;

또는

System.Data.Common.DbConnectionStringBuilder builder = new System.Data.Common.DbConnectionStringBuilder();

builder.ConnectionString = connectionString;

string server = builder["Data Source"] as string;
string database = builder["Initial Catalog"] as string;


답변

훨씬 간단한 대안은 연결 개체 자체에서 정보를 가져 오는 것입니다. 예를 들면 :

IDbConnection connection = new SqlConnection(connectionString);
var dbName = connection.Database;

마찬가지로 연결 개체에서도 서버 이름을 가져올 수 있습니다.

DbConnection connection = new SqlConnection(connectionString);
var server = connection.DataSource;


답변

string connectString = "Data Source=(local);" + "Integrated Security=true";

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);

Console.WriteLine("builder.InitialCatalog = " + builder.InitialCatalog);


답변

이것은 당신에게 Xact를 제공합니다;

System.Data.SqlClient.SqlConnectionStringBuilder connBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder();

connBuilder.ConnectionString = connectionString;

string server = connBuilder.DataSource;           //-> this gives you the Server name.
string database = connBuilder.InitialCatalog;     //-> this gives you the Db name.


답변

데이터베이스 이름은 SqlConnectionStringBuilder.InitialCatalog 속성 의 값입니다 .


답변

InitialCatalog Property 를 사용 하거나 builder["Database"]작동 할 수도 있습니다. 다른 케이스로 테스트했는데 여전히 작동합니다.