最近在做.NET实训的时候,需要在WindowsForm界面上配置数据库,很明显是要修改App.config中的<add key="ConnectionString" value="server=[服务器地址]database=[数据库名称];uid=sa;pwd=123456" />。修改这个节点很容易,具体方法百度一下就会有一大堆。但是修改之后我们继续运行程序会发现我们连接的数据库并不是修改以后的数据库,而仍然是修改之前的数据库。如果我们关闭程序重新启动,这时连接的数据库便是修改之后的数据库,可是不可能每一次配置完数据库后都重启程序吧,当然也可以在配置完数据库后动态启动重新运行程序。我这里要分享的是在不重启程序的情况下如何配置数据库:
[请根据下面的示例代码分析] UpdateConfig(string connectstr)方法很明显是对App.config文件进行修改,但其中有一句PubConstant.ConnectionString = connectstr;(示例代码已用斜体字标出)很关键。这里需要说明一下,在程序中我们取PubConstant.ConnectionString用做数据库的连接。而下面定义ConnectionString属性的时候只有get{}方法而没有set{}方法。既然我们用到了PubConstant.ConnectionString = connectstr;那么就需要添加set{}方法。我们这样做的目的就是在修改App.config文件的时候,将PubConstant.ConnectionString直接重新赋值,这样我们在做数据库操作的时候所连接的数据库就是最新配置的数据库了。
示例代码
public class PubConstant
{
/// <summary>
/// 获取连接字符串
/// </summary>
///
private static string _connectionString;
{
/// <summary>
/// 获取连接字符串
/// </summary>
///
private static string _connectionString;
public static string ConnectionString
{
get
{
{
get
{
_connectionString = ConfigurationManager.AppSettings["ConnectionString"];
return _connectionString;
}
//set
//{
// _connectionString = value;
//}
}
}
/// <summary>
/// 设置App.config里配置项的数据库连接字符串。
/// </summary>
public bool UpdateConfig(string connectstr)//connectstr是数据库连接字符串
{
bool result = false;
try
{
foreach (string key in ConfigurationManager.AppSettings)
{
if (key == "ConnectionString")
{
result = true;
}
}
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (result)
{
config.AppSettings.Settings.Remove("ConnectionString");
}
config.AppSettings.Settings.Add("ConnectionString", connectstr);
PubConstant.ConnectionString = connectstr;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
catch (Exception ex)
{
result = false;
}
return result;
}
/// 设置App.config里配置项的数据库连接字符串。
/// </summary>
public bool UpdateConfig(string connectstr)//connectstr是数据库连接字符串
{
bool result = false;
try
{
foreach (string key in ConfigurationManager.AppSettings)
{
if (key == "ConnectionString")
{
result = true;
}
}
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (result)
{
config.AppSettings.Settings.Remove("ConnectionString");
}
config.AppSettings.Settings.Add("ConnectionString", connectstr);
PubConstant.ConnectionString = connectstr;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
catch (Exception ex)
{
result = false;
}
return result;
}
}
浙公网安备 33010602011771号