使用该界面完成数据库服务器的连接配置,给用户提供一个方便、友好、易操作的界面。
首次配置成功后,下次登录就直接使用已配置连接登录。
如果需要更改另外的连接,可以直接将程序中的xxxx.exe.config文件删除。
用此登录界面结合开发的主程序运行。并设置好程序依赖关系。
以下为详细说明:
1、配置界面
这个界面用到了DevComponents.DotNetBar插件。
步骤:
1)下载DevComponents.DotNetBar2.dll(VS2010需要v10.0以上版本)
2)为工程添加引用,浏览找到DevComponents.DotNetBar2.dll
3)代码中添加using DevComponents.DotNetBar;
下载地址网上很容易找到,这里提供一个:http://www.pc6.com/softview/SoftView_95579.html
2、用到的类
1)ConfigType.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ServerTest.AppConfig
{
public enum ConfigType
{
/// <summary>
/// asp.net网站的config文件
/// </summary>
WebConfig = 1,
/// <summary>
/// Windows应用程序的config文件
/// </summary>
ExeConfig = 2
}
}
2)ConfigurationOperator.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Windows.Forms;
namespace ServerTest.AppConfig
{
/// <summary>
/// 说明:本类主要负责对程序配置文件(.config)进行修改的类,
/// 可以对网站和应用程序的配置文件进行修改
/// 作者:toff95
/// 日期:2014-09-10
/// 首发地址:http://blog.csdn.net/toff95
/// </summary>
public class ConfigurationOperator
{
private Configuration config;
private string configPath;
private ConfigType configType;
/// <summary>
/// 对应的配置文件
/// </summary>
public Configuration Configuration
{
get { return config; }
set { config = value; }
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="configType">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>
public ConfigurationOperator(ConfigType configType)
{
this.configType = configType;
if (configType == ConfigType.ExeConfig)
{
configPath = Application.ExecutablePath;
//AppDomain.CurrentDomain.BaseDirectory;
}
else
{
//configPath = HttpContext.Current.Request.ApplicationPath;
}
Initialize();
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="path">.config文件的位置</param>
/// <param name="type">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>
public ConfigurationOperator(string configPath, ConfigType configType)
{
this.configPath = configPath;
this.configType = configType;
Initialize();
}
//实例化configuration,根据配置文件类型的不同,分别采取了不同的实例化方法
private void Initialize()
{
//如果是WinForm应用程序的配置文件
if (configType == ConfigType.ExeConfig)
{
config = System.Configuration.ConfigurationManager.OpenExeConfiguration(configPath);
}
else//WebForm的配置文件
{
//config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath);
}
}
/// <summary>
/// 添加应用程序配置节点,如果已经存在此节点,则会修改该节点的值
/// </summary>
/// <param name="key">节点名称</param>
/// <param name="value">节点值</param>
public void AddAppSetting(string key, string value)
{
AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings");
if (appSetting.Settings[key] == null)//如果不存在此节点,则添加
{
appSetting.Settings.Add(key, value);
}
else//如果存在此节点,则修改
{
ModifyAppSetting(key, value);
}
}
/// <summary>
/// 添加数据库连接字符串节点,如果已经存在此节点,则会修改该节点的值
/// </summary>
/// <param name="key">节点名称</param>
/// <param name="value">节点值</param>
public void AddConnectionString(string key, string connectionString)
{
ConnectionStringsSection connectionSetting = (ConnectionStringsSection)config.GetSection("connectionStrings");
if (connectionSetting.ConnectionStrings[key] == null)//如果不存在此节点,则添加
{
ConnectionStringSettings connectionStringSettings = new ConnectionStringSettings(key, connectionString);
connectionSetting.ConnectionStrings.Add(connectionStringSettings);
}
else//如果存在此节点,则修改
{
ModifyConnectionString(key, connectionString);
}
}
/// <summary>
/// 修改应用程序配置节点,如果不存在此节点,则会添加此节点及对应的值
/// </summary>
/// <param name="key">节点名称</param>
/// <param name="value">节点值</param>
public void ModifyAppSetting(string key, string newValue)
{
AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings");
if (appSetting.Settings[key] != null)//如果存在此节点,则修改
{
appSetting.Settings[key].Value = newValue;
}
else//如果不存在此节点,则添加
{
AddAppSetting(key, newValue);
}
}
/// <summary>
/// 修改数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值
/// </summary>
/// <param name="key">节点名称</param>
/// <param name="value">节点值</param>
public void ModifyConnectionString(string key, string connectionString)
{
ConnectionStringsSection connectionSetting = (ConnectionStringsSection)config.GetSection("connectionStrings");
if (connectionSetting.ConnectionStrings[key] != null)//如果存在此节点,则修改
{
connectionSetting.ConnectionStrings[key].ConnectionString = connectionString;
}
else//如果不存在此节点,则添加
{
AddConnectionString(key, connectionString);
}
}
/// <summary>
/// 保存所作的修改
/// </summary>
public void Save()
{
config.Save();
}
}
}
3)ConntionConfig.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using DevComponents.DotNetBar;
using System.Windows.Forms;
using ServerTest.Forms;
using System.Data.SqlClient;
using System.Data;
using System.Security.Cryptography;
namespace ServerTest.AppConfig
{
/// <summary>
/// SQL数据库服务器配置静态类
/// </summary>
public class ConntionConfig
{
/// <summary>
/// 检查配置信息
/// </summary>
/// <returns>完整有效返回true,无效则启动配置界面</returns>
public static bool CheckConntionConfig()
{
if (CheckedConnection())
{
return true;
}
else
{
return CheckedConfig();
}
}
/// <summary>
/// 验证配置信息
/// </summary>
private static bool CheckedConfig()
{
MessageBoxEx.Show("数据库服务器无法连接,请重新配置。",
"系统提示",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
SvrConf svrConf = new SvrConf();
svrConf.ShowDialog();
if (MessageBoxEx.Show("是否现在进入系统?", "询问",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question) =