【发布时间】:2018-11-13 06:25:25
【问题描述】:
我正在使用用 C# 创建的 WinForm 表单连接到 Sql 服务器数据库。
要连接到数据库,用户必须提供登录名和密码。
我使用配置文件 App.config 来存储 connectionString 如下:
<ConnectionStrings>
<Add name = "K1" connectionString = "Data Source = HP; Initial Catalog = TRVANALYT; User ID = {0}; Password = {1}
ProviderName = "System.Data.SqlClient" />
</ ConnectionStrings>
向我提出的问题没有保存新的connectionString。
要刷新 connextionString K1 我必须重建程序,它会给出正确的结果
如果您有建议
最佳做法是什么?
非常感谢
我的代码:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
string connexionstring = ConfigurationManager.ConnectionStrings["K1"].ToString();
var connectionStringsSection = (ConnectionStringsSection) config.GetSection("connectionStrings");
string NewConnexionstring = string.Format(connexionstring, txtUser.Text, txtPwd.Text);
connectionStringsSection.ConnectionStrings["K1"].ConnectionString = NewConnexionstring; //Set new connectionString with user and password
connectionStringsSection.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
ConfigurationManager.RefreshSection("connectionStrings");
App.config
<configSections>
</configSections>
<connectionStrings>
<add name="K1" connectionString="Data Source=HP;Initial Catalog=TRVANALYT;User ID={0};Password={1}" providerName="System.Data.SqlClient" />
</connectionStrings>
【问题讨论】:
-
您在哪个路径中编辑您的 app.config 文件?该文件被复制到 bin 文件夹并在构建期间重命名为 YourApp.exe.config,并且应用程序实际上从那里读取它 - 因此,如果您在那里进行编辑,则不必重新构建。
-
为什么我必须知道路径?我执行程序的要点,我想更改新用户的 app.config 和他的 sql server 密码以及我如何继续按照您的要求进行操作?
-
我问的原因是你说你必须重建程序才能应用更改。构建时,该文件被复制到 bin 目录,这是程序运行时读取的位置。如果您在源目录中编辑文件,程序将不会看到更改,直到它被重建并且我再次复制到 bin 文件夹中的文件。
标签: c# app-config