2013-09-16 104 views
1

我正在构建一个.NET 4.0 C#应用程序,它连接到一个Web服务,抽取一些数据,然后将其插入到数据库中。此应用程序旨在不需要用户输入,因为它将按计划每天运行。多个部署的连接字符串

当我将这个应用程序部署到我们的客户时,我遇到了一个问题。其中一些用户正在使用SQL Server作为后端,另一些则使用MS Access。我能想到的唯一解决方案是将连接字符串作为命令行参数传递,但我不喜欢这种方法。由于我必须将其部署到70多个不同的客户,所以我宁愿不为每个客户编译该程序的副本。

任何想法和想法,赞赏。

+3

把它放在'app.config'文件。 –

+0

它是一个Windows服务? – VahidNaderi

+0

把连接字符串放在'app.config'文件中 – paul

回答

3

您可以在App.config文件中包含连接字符串。在应用程序部署过程中,您可以通过查询registery来检查用户机器是否安装了SQL Server。基于这个结果更新应用程序配置与数据库特定的连接字符串。在app.config

App.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 

<appSettings> 
<add key="DbConnectionString" value="Will be updated during deployment" /> 
</appSettings> 

</configuration> 

更新连接字符串:

Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
configuration.AppSettings.Settings["DbConnectionString"].Value = "DB Specific Connection string"; 

//Save only the modified section of the config 
configuration.Save(ConfigurationSaveMode.Modified); 

//Refresh the appSettings section to reflect updated configurations 
ConfigurationManager.RefreshSection(Constants.AppSettingsNode); 
+0

我不需要将连接字符串硬编码到我的应用程序中吗?我从哪里得到连接字符串? – DoubleJ92

+0

@ DoubleJ92你不必硬编码它。从App配置文件中读取它。见编辑的答案。 – Kurubaran

+0

我必须缺少一些东西。 DbConnectionString的初始值为“将在部署过程中更新” 程序运行时,该值将更新为实际的连接字符串。这是从哪里来的? – DoubleJ92