Вопрос по ado.net, asp.net, sql, c# – Как получить имя базы данных из строки подключения с помощью SqlConnectionStringBuilder

77

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

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

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

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

Ваш Ответ

7   ответов
3

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

4

Имя базы данных является значениемSqlConnectionStringBuilder.InitialCatalog имущество.

5

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

Вы можете использовать класс 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;
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededstring database = builder["Initial Catalog"] as string;Error: User Rate Limit Exceeded
25

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

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

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

DbConnection connection = new SqlConnection(connectionString);
var server = connection.DataSource;
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededIDbConnection?
Error: User Rate Limit ExceededSqlConnectionError: User Rate Limit Exceeded
Error: User Rate Limit Exceededstackoverflow.com/q/47727524/5779732
9
string connectString = "Data Source=(local);" + "Integrated Security=true";

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);

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

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

Gets or sets the name of the database associated with the connection...

This property corresponds to the "Initial Catalog" and "database" keys within the connection string...

Похожие вопросы