2012-04-12 64 views
0

我有一個程序使用TableAdapter創建的DataTable生成報告。現在我的客戶有一個新的數據庫,他希望能夠在新舊數據庫之間切換。我發現我可以通過更改app.config中的連接字符串來實現,但我不知道如何在運行時執行此操作。你能告訴我一個方法嗎? 感謝如何更改app.config中的連接字符串

回答

7

我不知道如何在運行時做

不要。您可以在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

1

您可以定義多個連接字符串是這樣的:

<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

相關問題