2013-09-16 106 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