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


88

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

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

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

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

답변:



148

공급자 별 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;

2
나를 위해 마지막 줄은 다음과 같아야합니다 string database = builder["Initial Catalog"] as string;.- "Database"는 잘못된 키워드였습니다.
산드라

@Sandra 예 UR 맞습니다. SqlConnectionStringBuilder를 사용하면 builder [ "Database"]를 문자열로 사용할 수 있습니다.
Romil Kumar Jain

32

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

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

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

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

이것이 제가 찾던 것입니다. 감사.
Ivan Santiago

이것은 SqlConnection. 이 교차 RDBMS를 만드는 유사한 방법이 있습니까?
Amit Joshi

@AmitJoshi 그들은 모두 구현 IDbConnection해야합니까?
nawfal

@nawfal : 동의하지만 여전히 사용할 수 없습니다. 이 질문에서 자세히 설명했습니다. stackoverflow.com/q/47727524/5779732
Amit Joshi

데이터베이스 및 데이터 소스를 가져올 수 있지만 이런 방식으로 사용자 ID와 암호를 가져올 수 없습니다.
Dush

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

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);

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

7

이것은 당신에게 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.


4

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.