如何更改app.config中的连接字符串

问题描述:

我有一个程序使用TableAdapter创建的DataTable生成报告。现在我的客户有一个新的数据库,他希望能够在新旧数据库之间切换。我发现我可以通过更改app.config中的连接字符串来实现,但我不知道如何在运行时执行此操作。你能告诉我一个方法吗? 感谢如何更改app.config中的连接字符串

我不知道如何在运行时做

不要。您可以在app.config中有多个连接字符串,并在需要时访问每个连接字符串。

配置:

<connectionStrings> 
    <add name="conn1" providerName="System.Data.SqlClient" 
     connectionString="..." /> 
    <add name="conn2" providerName="System.Data.SqlClient" 
     connectionString="..." /> 
</connectionStrings> 

在代码:

var conn1 = ConfigurationManager.ConnectionStrings["conn1"]; 
var conn2 = ConfigurationManager.ConnectionStrings["conn2"]; 
+0

请问该效果的TableAdapter的?我知道当我创建TableAdapter时,我需要指定它将使用的连接。我知道我可以有多个连接字符串,但是如何在它们之间切换,以便该开关影响整个应用程序。 – NDraskovic 2012-04-12 11:25:50

+0

@NDraskovic - 您需要决定要使用哪个连接。如果你抽象决定使用哪一个类到自己的类,你将有一个中心点来访问不同的连接字符串。 – Oded 2012-04-12 11:31:06

+0

抱歉,我不明白,所以我会告诉你我的想法,请告诉我它是否合理:我可以创建TableAdapter来创建包含所需数据的DataTables。现在,由于这些数据库具有相同的模式,我只需要更改TableAdapter的连接,并且它应该用来自我想要的数据库的数据填充DataTable。这能做到吗?我该怎么做? – NDraskovic 2012-04-12 11:36:06

您可以定义多个连接字符串是这样的:

<add name="Conn" connectionString="Data Source=PC\SQLEXPRESS;Initial Catalog=NHIB;Integrated Security=True" providerName="System.Data.SqlClient"/>--> 
<add name="Conn1" connectionString="Data Source=WINSERVER;Initial Catalog=NHIB1;Integrated Security=True;" providerName="System.Data.SqlClient"/> 

之后,你可以用康恩或conn1的根据您的要求..喜欢:

SqlConnection con; 
con = new SqlConnection(ConfigurationManager.AppSettings.Get("Conn")); Or 
con = new SqlConnection(ConfigurationManager.AppSettings.Get("Conn1")); 

您可以将如下之间切换:

string connectionString = HttpContext.Current.Request.IsLocal ? 
ConfigurationManager.ConnectionStrings["Conn"].ConnectionString : 
ConfigurationManager.ConnectionStrings["Conn1"].ConnectionString; 
yourDataContext = new YourApplicationDataContext(connectionString); 
+0

它会更好地显示OP从配置回收密钥 – 2012-04-12 10:51:31

+0

为什么使用'AppSettings'而不是专用的'ConnectionStrings'? – Oded 2012-04-12 10:55:52

+0

这取决于..... – 2012-04-12 10:59:16