如何以编程方式或动态方式在web.config文件中设置connectionstring?

时间:2015-01-03 20:17:00

标签: c# asp.net connection-string

我正在尝试创建一个ASP.NET网站。我在那里使用数据库。要连接数据库,我使用的是我在web.config文件中存储的连接字符串,如

  <connectionStrings>
  <add name="DBConnectionString" 
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=G:\CarRentalServices\App_Data\CarRentalServiceDB.mdf;Integrated Security=True"/>
  </connectionStrings>

和代码背后的

private string _connectionString = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;

因此,您可以看到数据库存储在G:\path\to\db\CarRentalServiceDB.mdf

但是现在,如果我的朋友想从我这里拿走项目并尝试从他的机器上运行项目,那么他必须在connectionString更改web.config。假设网站现在位于朋友机器的D:\path\to\db\foo\CarRentalServiceDB.mdf,那么connectionString需要更改。不是很乏味吗?

有没有办法用任何批处理文件或代码动态更改connectionString,以便它会相对于它现在居住的当前目录进行更改?

2 个答案:

答案 0 :(得分:2)

您应该使用|数据目录|令牌:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx

<connectionStrings>
 <add name="DBConnectionString" 
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\App_Data\CarRentalServiceDB.mdf;Integrated Security=True"/>

答案 1 :(得分:0)

您可以在web.config文件中添加多个连接字符串,然后调用所需的字符串

Web.config文件

  <connectionStrings>
  <add name="DBConnectionString" 
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=G:\CarRentalServices\App_Data\CarRentalServiceDB.mdf;Integrated Security=True"/>
  <add name="DBConnectionStringTwo" 
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\path\to\db\foo\CarRentalServiceDB.mdf;Integrated Security=True"/>
  </connectionStrings>

连接字符串代码

//Connection String 1 
private string _connectionString = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;

//Connection String 2 
private string _connectionString2 = ConfigurationManager.ConnectionStrings["DBConnectionStringTwo"].ConnectionString;