Информация о соединении с базой данных

В .Net есть класс в .Net, где вы можете получить имя БД и всю информацию о строках соединения, не выполняя при этом подстроку в строке соединения?

EDIT:

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

Ответ 1

Вы можете использовать специфический для провайдера класс ConnectionStringBuilder (в пределах соответствующего пространства имен) или System.Data.Common.DbConnectionStringBuilder, чтобы абстрагировать объект строки соединения, если вам нужно. Вам нужно будет знать ключевые слова, используемые поставщиком, для обозначения информации, которую вы ищете, но для примера SQL Server вы можете сделать одну из этих двух вещей:

Учитывая

string connectionString = "Data Source = .\\SQLEXPRESS;Database=Northwind;Integrated Security=True;";

Вы можете сделать...

System.Data.Common.DbConnectionStringBuilder builder = new System.Data.Common.DbConnectionStringBuilder();

builder.ConnectionString = connectionString;

string server = builder["Data Source"] as string;
string database = builder["Database"] as string;

или

System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder();

builder.ConnectionString = connectionString;

string server = builder.DataSource;
string database = builder.InitialCatalog;

Ответ 2

После инициализации соединения со строкой соединения вы можете получить эту информацию из свойств инициализированного объекта соединения.

Проверить System.Data.Common.DbConnection.

Ответ 3

Yep ConnectionInfo

http://msdn.microsoft.com/en-us/library/ms226340(VS.80).aspx

EDIT: Я, вместе с Крисом, понял, что это работает, только если импортированные пространства имен Crystal Reports импортированы. В противном случае я не уверен

Ответ 4

ConnectionInfo connectionInfo = new ConnectionInfo ();
connectionInfo = logOnInfo.ConnectionInfo;

connectionInfo.DatabaseName = database;
connectionInfo.ServerName = server;
connectionInfo.Password = password;
connectionInfo.UserID = user;

РЕДАКТИРОВАТЬ: Похоже, Натан избил меня, потому что мой из той же страницы.

ИЗМЕНИТЬ СНОВА. Я должен отметить, что ConnectionInfo находится в пространстве имен CrystalDecisions.Shared. Что касается того, как получить его из общего соединения с БД, я не уверен.

Ответ 5

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

здесь он объяснил:

http://msdn.microsoft.com/en-us/library/ms254947.aspx

Ответ 6

SqlConnection sq = new SqlConnection(ConnectionString);

Ссылка

Выполнено с помощью инструкции "using" (из MSDN)

using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        // Do work here; connection closed on following line.
    }