Как получить имя базы данных и имя_сервера из строки подключения в webconfig?

Как получить строку подключения из Web Config? Я хочу показать базу данных и имя сервера на моей главной странице ASP.net(С#).

Строка подключения в моем web.config выглядит так:

<add name="Application_ConnectionString" connectionString="Data Source=ServerName;Initial Catalog=DatabaseName;Persist Security Info=True;Connection Timeout =60;Integrated Security=SSPI" providerName="System.Data.SqlClient"/>

Ответ 1

Также существует класс SqlConnectionStringBuilder:

var connectionString = 
  new System.Data.SqlClient.SqlConnectionStringBuilder("Data Source=ServerName;Initial Catalog=DatabaseName;Persist Security Info=True;Connection Timeout =60;Integrated Security=SSPI"); 

Console.WriteLine(connectionString.DataSource);
Console.WriteLine(connectionString.InitialCatalog);
// ...

Ответ на комментарий:

Чтобы получить строки подключения непосредственно из конфигурации, используйте:

foreach (ConnectionStringSettings c in System.Web.Configuration.WebConfigurationManager.ConnectionStrings)
{
    var connectionString = new SqlConnectionStringBuilder(c.ConnectionString)
    //connectionString.DataSource; // server name
    //connectionString.InitialCatalog; // database name
}

Обратите внимание, что это будет включать строки подключения в файле machine.config(например, data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true). Если вы не хотите видеть, что вы можете отфильтровать его в коде или добавить элемент <clear /> в свой web.config перед строками подключения.

Ответ 2

SqlConnection имеет свойство Database поэтому вы можете получить имя db после этого после создания соединения.

Вы можете получить имя экземпляра, используя свойство DataSource в классе SqlConnection. Экземпляр похож на имя сервера, но не совсем то же самое.

Ответ 3

Это сработало для меня:

        var conn = ConfigurationManager.ConnectionStrings["yourconnectionstringname"].ConnectionString;
        var csb = new SqlConnectionStringBuilder(conn);
        textboxServer.Text = csb.DataSource;
        textboxUserName.Text = csb.UserID;
        textboxPassword.Text = csb.Password;
        textboxInitialCatalog.Text = csb.InitialCatalog;

Надеюсь, это поможет вам