2014-10-08 80 views
2

修改连接字符串,所以我的目标是有一个“设置表”,它允许用户编辑连接字符串(通过改变数据库名称/服务器位置。与变量

这样做的原因是,它的IT需求以便能够在服务器位置很快由可能没有任何C#经验的人员改变时更改(前端GUI)

我在app.config中创建了连接字符串,但找不到指定变量的方法在conn字符串里面可以改变吗?我已经使用项目属性创建了一些应用程序范围的设置。这是我的app.config

要做到这一点
<connectionStrings> 
    <add name="xxxx" 
     connectionString="Data Source=ServerIP;Initial Catalog=DBName;Persist Security Info=True;User ID=user;Password=password" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 
<applicationSettings> 
    <xxx.Properties.Settings> 
     <setting name="ServerIP" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="DBName" serializeAs="String"> 
      <value /> 
     </setting> 
    </xxx.Properties.Settings> 
</applicationSettings> 
+1

你可能想利用看看这个: http://stackoverflow.com/questions/719928/how-do-you-modify-the-web-config-appsettings-at-runtime – Hatjhie 2014-10-08 01:07:37

+0

嗨,你知道我是否可以使用它的一个连接字符串呢?谢谢 – AlexP2014 2014-10-08 03:57:16

+0

是的,你可以。有可能的。 – Hatjhie 2014-10-08 04:10:27

回答

2

一种方法是使用连接字符串中的配置文件中的部分占位符({0}{1}),像这样:

Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID=user;Password=password 

,然后通过string.Format时填写这些您可以在代码中阅读连接字符串,如下例所示。 (注:这假定您已经添加了一个参考System.Configuration.dll,以及您检索到的应用程序设置成两个变量,serverIPdbName

using System.Configuration; 

... 

string connectionString = string.Format(
    ConfigurationManager.ConnectionStrings["xxxx"].ConnectionString, 
    serverIP, 
    dbName); 
+0

好的非常感谢,生病给了一个镜头。 所以基本上如果我想要更多的变量,我只是添加更多的占位符{3}和{4}等等创建的变量的顺序? – AlexP2014 2014-10-08 04:31:02

+1

是的,但不要跳过'{2}'。 :-) – 2014-10-08 04:36:26

+0

woops哈哈谢谢! – AlexP2014 2014-10-08 05:06:28