2012-03-30 26 views
2

可能重複:
VS2005 C# Programmatically change connection string contained in app.config動態配置的app.config在C#中連接到其他數據庫

我已經在我的電腦使用C#創建一個WinForms項目,並希望將項目部署到其他PC上,但我需要更改app.config中的連接字符串以便連接其他PC上的sql服務器數據庫,並且我希望用戶配置連接字符串。

我該如何做到這一點?

+0

機器上的不同數據庫是否存在模式? – 2012-03-30 17:31:40

+0

數據庫是sqlserver 2008 express版本,並且將運行在瘦客戶機服務器上,並且我想將我的書面應用程序部署到服務器,因此每個瘦客戶機都可以使用與數據庫交互的應用程序,但是我想要用戶配置應用程序和數據庫之間的連接 – user1286824 2012-03-30 17:38:08

回答

5

如果您爲項目創建了一個設置文件,將會有一個以類型安全方式表示屬性的類。這通常是類似TiddleBits.Properties.Settings.Default,其中TwiddleBits是您的程序集名稱。

如果您尚未爲您的項目創建設置文件,請執行此操作。它極大地簡化了配置文件的工作。

一旦類存在,就可以像讀取任何其他類一樣讀寫屬性。請記住在完成分配屬性後保存更改,否則將被丟棄。

3

像其他人說,創建自己的配置文件是要走的路。這裏有一些代碼可以幫助

只需在VS中創建一個app.config文件,並將其放在與dll相同的目錄中。它看起來像這樣。

<?xml version="1.0" encoding="utf-8" ?> 
     <configuration> 
     <appSettings> 
     <add key="YourThing" value="Something" /> 
     </appSettings> 
    </configuration> 

然後你可以加載它lke這個。

string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 

     string configFile = System.IO.Path.Combine(appPath, "App.config"); 
     ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap(); 
     configFileMap.ExeConfigFilename = configFile; 

     System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None); 

然後,您可以讀取像這樣的值。

config.AppSettings.Settings["YourThing"].Value; 

並保存這樣的值。

config.AppSettings.Settings["YourThing"].Value = "New Value"; 
config.Save();