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


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

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

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

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

7 72

7 ответов:

посмотреть документация MSDN для свойства InitialCatalog:

возвращает или задает имя базы данных, связанные с подключением...

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

можно использовать класс 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 собственность или builder["Database"] работает так же. Я протестировал его с другим случаем, и он все еще работает.