0

我有一个程序使用 TableAdapters 创建的 DataTables 生成报告。现在我的客户有一个新数据库,他希望能够在新数据库和旧数据库之间切换。我发现我可以通过更改 app.config 中的连接字符串来做到这一点,但我不知道如何在运行时做到这一点。你能给我一个方法吗?谢谢

4

2 回答 2

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"];
于 2012-04-12T10:48:34.383 回答
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"/>

之后,您可以根据您的要求使用 conn 或 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);
于 2012-04-12T10:50:31.747 回答