Ответ 1
См. Документация MSDN для свойства InitialCatalog:
Получает или задает имя базы данных, связанной с соединением...
Это свойство соответствует ключам "Начальный каталог" и "база данных" в строке подключения...
Я никогда не хочу разделить строку соединения, используя строковые манипуляции, и получить сервер, базу данных, uid и пароль.
Я прочитал следующую ссылку и прочитал принятый ответ, я обнаружил, что это лучший способ получить идентификатор пользователя и пароль из строки подключения, но как насчет имени базы данных?
Правильный способ получить имя пользователя и пароль из строки подключения?
Как получить имя базы данных из строки подключения с помощью SqlConnectionStringBuilder. (является ли DataSource именем сервера?)
См. Документация 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);
Имя базы данных является значением свойства SqlConnectionStringBuilder.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.
Вы можете использовать InitialCatalog Свойство или builder["Database"]
также работает. Я тестировал его в разных случаях, и он все еще работает.