Как получить имя базы данных из строки подключения с помощью SqlConnectionStringBuilder

Я никогда не хочу разделить строку соединения, используя строковые манипуляции, и получить сервер, базу данных, uid и пароль.

Я прочитал следующую ссылку и прочитал принятый ответ, я обнаружил, что это лучший способ получить идентификатор пользователя и пароль из строки подключения, но как насчет имени базы данных?

Правильный способ получить имя пользователя и пароль из строки подключения?

Как получить имя базы данных из строки подключения с помощью SqlConnectionStringBuilder. (является ли DataSource именем сервера?)

Ответ 1

См. Документация MSDN для свойства InitialCatalog:

Получает или задает имя базы данных, связанной с соединением...

Это свойство соответствует ключам "Начальный каталог" и "база данных" в строке подключения...

Ответ 2

Вы можете использовать специфический для провайдера класс 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;

Ответ 3

Более простая альтернатива - получить информацию от самого объекта соединения. Например:

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

Аналогичным образом вы можете получить имя сервера и из объекта соединения.

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

Ответ 4

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

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);

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

Ответ 6

это дает вам 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.

Ответ 7

Вы можете использовать InitialCatalog Свойство или builder["Database"] также работает. Я тестировал его в разных случаях, и он все еще работает.