ここに私の最初の質問と私の最初の C# プログラムがあります。
接続文字列を永続的に変更できる関数が必要です。
私のプログラムはこの構造を持っています:メインフォームはForm1
、ボタンをクリックすると、ユーザーがログインできる場所(パスワードはオプションの変更を保護します)から新しいフォームOptions
を取得し、ログインが成功した場合は新しいフォームを作成します- 。のコンストラクターでは、からオブジェクトを渡します。ボタンをクリックしてデータベース名を変更したいので、コードは次のとおりです。Form3
Form4
Form4
SqlConnection
Form1
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");
しかし、それは何も変更しません。ユーザーがデータベース名を変更できるようにこの設定ファイルを変更する方法がわかりません。アプリを再起動すると、この新しい変更された接続文字列が必要になります。
編集 :
VS のデバッグではなく、bin/Release .exe バージョンからこのコードを実行する必要があることがわかりました。実際にこの構成ファイルを変更します。