2

所以这是我的第一个问题和我的第一个 C# 程序:

我需要可以永久更改连接字符串的函数。

我的程序有这样的结构:主表单是Form1,当我点击按钮时Options,我从 - 获取新的Form3,用户可以登录(密码保护更改选项),如果登录成功,我创建新表单 - Form4。在 的构造函数中Form4,我SqlConnectionForm1. 我想通过单击按钮更改我的数据库名称,所以这里是代码:

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");

但它不会改变任何东西,我不知道如何更改此设置文件,以便用户可以更改数据库名称,并且当他们重新启动应用程序时,他们应该有这个新的更改连接字符串。

编辑 :

感谢您的回复,事实证明我应该从 bin/Release .exe 版本运行此代码,而不是在 VS 中的 Debug 下运行,它实际上更改了此配置文件。

4

2 回答 2

0

如果您使用的是 Visual Studio,那么您可以使用项目的“属性”表单在可执行文件中设置一系列设置,并且无需反射即可访问这些设置。这些属性可以设置为“应用程序级别”或“用户级别”,从而确定任何更改的范围。

YourProjectName.Properties.Settings.Default.YourSettingName = "一个设置";

如果您知道要存储多少个 ConnectionString 和其他变量,这很好,如果您需要设置未知数量的连接字符串,那么我个人会为每个设置使用带有 Rows 的 DataTable,可以将其保存到 XML 文件中您的应用程序目录或每个用户。

于 2013-07-31T12:42:54.823 回答
0

将您的配置数据存储在单例配置对象中,并从那里使用连接字符串。在启动期间使用 app.config 中的连接字符串初始化单例对象,然后再更改它。

于 2013-07-31T12:46:44.803 回答