2008-09-15 34 views
9

想要在Windows應用程序中利用asp.net的成員資格提供程序以編程方式更改數據庫的connecton字符串。 system.configuration命名空間允許更改用戶設置,但是,我們希望調整應用程序設置?是否需要編寫一個利用XML來修改類的類?是否需要刪除當前連接(可以選擇一個連接來清除)並添加一個新連接?可以調整現有的連接字符串嗎?VS2005 C#以編程方式更改app.config中包含的連接字符串

回答

6

您可以用編程方式使用System.Configuration命名空間打開配置:

myConfig.ConnectionStrings.ConnectionStrings

可以修改:

Configuration myConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

然後你就可以在訪問連接字符串集合然後收集您想要的數據,然後在配置對象上調用.Save()

0

使用ConnectionStringsSection類。該文檔甚至提供了一個關於如何創建一個新的ConnectionString的例子,並讓框架將它保存到配置文件中,而不必實現整個XML shebang。

請參閱here並向下瀏覽以查看示例。

8
// Get the application configuration file. 
System.Configuration.Configuration config = 
     ConfigurationManager.OpenExeConfiguration(
     ConfigurationUserLevel.None); 

// Create a connection string element and 
// save it to the configuration file. 

// Create a connection string element. 
ConnectionStringSettings csSettings = 
     new ConnectionStringSettings("My Connection", 
     "LocalSqlServer: data source=127.0.0.1;Integrated Security=SSPI;" + 
     "Initial Catalog=aspnetdb", "System.Data.SqlClient"); 

// Get the connection strings section. 
ConnectionStringsSection csSection = 
    config.ConnectionStrings; 

// Add the new element. 
csSection.ConnectionStrings.Add(csSettings); 

// Save the configuration file. 
config.Save(ConfigurationSaveMode.Modified); 
+0

這是添加連接字符串,而不是修改現有的 – Thomas 2012-02-08 09:32:57

9

必須做到這一點確切的事情。這是爲我工作的代碼:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings"); 
connectionStringsSection.ConnectionStrings["Blah"].ConnectionString = "Data Source=blah;Initial Catalog=blah;UID=blah;password=blah"; 
config.Save(); 
ConfigurationManager.RefreshSection("connectionStrings"); 
相關問題