如何从webconfig中的connectionstring中检索databaseName和serverName?

时间:2011-04-06 23:01:10

标签: asp.net

如何从Web Config获取连接字符串? 我想在我的主ASP.net页面(C#)上显示数据库和服务器名称。

我的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"/>

4 个答案:

答案 0 :(得分:20)

还有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)。如果您不想看到可以在代码中过滤它,或者在连接字符串之前向您的web.config添加<clear />元素。

答案 1 :(得分: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;

希望这会对你有所帮助

答案 2 :(得分:1)

SqlConnection具有Database属性,因此您可以在创建连接后从中获取数据库名称。

您可以使用SqlConnection类上的DataSource属性获取实例名称。实例类似于服务器名称,但不完全相同。

答案 3 :(得分:1)

如果您使用的是Entity Framework,并且由于连接字符串以metadata开头而出现错误,请使用以下

var c = new SqlConnectionStringBuilder(new EntityConnectionStringBuilder("YOUR_CONNECTION_STRING").ProviderConnectionString);
// c.DataSource; // server name
// c.InitialCatalog; // database name