您好我正在开发一个应用程序,我在第一次运行时动态地从用户那里获取连接字符串。
我的app.config是
<connectionStrings>
<add name="DConnection" connectionString=""
providerName="MySql.Data.MySqlClient"/>
<add name="SConnection" connectionString=""
providerName="System.Data.SqlClient" />
</connectionStrings>
我使用以下方法
为app.config的属性分配连接字符串private void CheckingSource(string constr)
{
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings["SConnection"].ConnectionString = constr; //CONCATINATE YOUR FIELDS TOGETHER HERE
config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");
}
private void CheckingDestination(string constr)
{
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings["DConnection"].ConnectionString = constr; //CONCATINATE YOUR FIELDS TOGETHER HERE
config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");
}
现在我必须将此连接字符串写入app.config,以便用户在下次使用这些更新的连接字符串时运行应用程序。
我们如何管理它?我没有任何想法,因为我对app.config和它的用法仍然更新鲜。
答案 0 :(得分:4)
现在我必须将此连接字符串写入app.config,以便用户在下次使用这些更新的连接字符串时运行应用程序。
您不应该这样做,app.config
文件可能会被部署到C:\Program Files\Your Application
这样的地方,而 可以被普通用户写入。
相反,除了使用ConfigurationManager.ConnectionStrings
之外,还可以通过某种方式提供连接字符串。
using (var connection = new SqlConnection(GetConnectionStringFromUser())) { ...
关于“保存”连接字符串的具体问题,你应该看看某种持久性机制,如.NET的Application Settings。
应用程序设置体系结构支持使用应用程序或用户范围定义强类型设置,并在应用程序会话之间保持设置。
答案 1 :(得分:1)