2013-07-31 80 views
2

因此,這裏是我的第一個問題,我的第一個C#程序:C#的WinForms其他形式改變數據庫名稱

我需要的功能,可以永久地改變一個連接字符串。

我的程序具有這樣的結構: 主要形式是Form1,當我按一下按鈕,Options,我得到新的 - Form3,在那裏用戶可以登錄(密碼保護更改選項),如果登錄是全成我創造新的表格 - Form4。在Form4的構造函數中,我從Form1傳遞了一個SqlConnection對象。我想通過點擊按鈕來改變我的數據庫的名字,所以這裏是代碼:

var config = ConfigurationManager 
.OpenExeConfiguration(ConfigurationUserLevel.None); 

var connectionStringsSection = (ConnectionStringsSection)config 
.GetSection("connectionStrings"); 

var x = connectionStringsSection 
.ConnectionStrings["App.Properties.Settings.ppsConnectionString"] 
.ConnectionString; 

String[] words = x.Split(';'); 

words[1] = "Initial Catalog="+textBoxDB.Text; 
x=String.Join(";", words); 

connectionStringsSection 
.ConnectionStrings["App.Properties.Settings.ppsConnectionString"] 
.ConnectionString = x; 
//above, this variable x in debug mode looks right 
//I read this line below should update file, so change would be permamently 
config.Save(ConfigurationSaveMode.Modified); 
ConfigurationManager.RefreshSection("connectionStrings"); 

但它不會改變任何東西,我不知道如何更改此設置文件,以便用戶可以更改數據庫名稱當他們重新啓動應用程序時,他們應該有這個新的更改的連接字符串。

編輯:

感謝事實證明,我應該從斌/釋放的.exe版本VS運行這段代碼,而不是在調試,它實際上改變了這個配置文件的響應。

+0

複製 - http://stackoverflow.com/questions/3838027/how-to-update-an-value-in-app-config-file - 真的,谷歌搜索將展示如何一噸結果從C#更新配置文件。 – Pete

+0

嗯,我沒有看到評論,有一個棘手的細節 – vul6

回答

0

如果您正在使用Visual Studio,那麼你可以設置一個範圍的使用項目和這些設置的屬性形式的可執行文件中的設置可以在不反射訪問。可以將這些屬性設置爲「應用程序級別」或「用戶級別」,以確定任何變化的範圍。

YourProjectName.Properties.Settings.Default.YourSettingName = 「A環境」;

這很好,如果你知道有多少ConnectionStrings和其他變量你想存儲,如果你需要設置未知數量的連接字符串,那麼我個人會使用一個DataTable與行的每個設置,它可以保存到應用程序目錄中的XML文件或每個用戶。在一個單獨的配置對象

0

存儲配置數據,並從那裏使用的連接字符串。在啓動過程中使用來自app.config的連接字符串初始化單例對象,稍後再進行更改。