如何从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"/>
答案 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