using CSFrameworkV5.Core.Common; using Microsoft.Win32; ///*************************************************************************/ ///* ///* 文件名 :SqlConfigWriter.cs ///* 程序说明 : SQL连接配置存储策略 ///* 原创作者 :孙中吕 ///* ///* Copyright 2006-2017 C/S框架网 www.csframework.com ///* ///**************************************************************************/ using System; namespace CSFrameworkV5.Core { /// /// 从INI文件读取SQL连接配置 /// public class IniFileWriter : IWriteSQLConfigValue { private string _iniFile; /// /// 构造器 /// /// INI文件 public IniFileWriter(string iniFile) { _iniFile = iniFile; if (!System.IO.File.Exists(iniFile)) Write(); Read(); } public string DatabaseType { get; set; } public string ConnectionString { get; set; } public string ServerName { get; set; } public int Port { get; set; } public string DatabaseName { get; set; } public string UserName { get; set; } public string Password { get; set; } /// /// 读取配置 /// public void Read() { var cfg = new IniFile(_iniFile); ConnectionString = KeyProvider.Default.Decrypt( cfg.IniReadValue("Connection Settings", "SystemConnection", "")); DatabaseType = cfg.IniReadValue("Connection Settings", "DatabaseType"); ServerName = cfg.IniReadValue("Connection Settings", "ServerName"); Port = ConvertEx.ToInt(cfg.IniReadValue("Connection Settings", "Port")); DatabaseName = cfg.IniReadValue("Connection Settings", "DatabaseName"); UserName = cfg.IniReadValue("Connection Settings", "UserName"); Password = KeyProvider.Default.Decrypt( cfg.IniReadValue("Connection Settings", "Password", "")); } /// /// 将配置写入INI文件 /// public void Write() { var cfg = new IniFile(_iniFile); if (cfg != null) { cfg.IniWriteValue("Connection Settings", "SystemConnection", KeyProvider.Default.Encrypt(ConnectionString)); cfg.IniWriteValue("Connection Settings", "DatabaseType", DatabaseType.ToStringEx()); cfg.IniWriteValue("Connection Settings", "ServerName", ServerName.ToStringEx()); cfg.IniWriteValue("Connection Settings", "Port", Port.ToStringEx()); cfg.IniWriteValue("Connection Settings", "DatabaseName", DatabaseName.ToStringEx()); cfg.IniWriteValue("Connection Settings", "UserName", UserName.ToStringEx()); cfg.IniWriteValue("Connection Settings", "Password", KeyProvider.Default.Encrypt(Password)); } } /// /// 加载连接配置 /// /// 配置文件 public static IWriteSQLConfigValue LoadConfiguration(string ConfigFile) { if (System.IO.File.Exists(ConfigFile)) { IWriteSQLConfigValue cfg = new IniFileWriter(ConfigFile); return cfg; } else { throw new Exception( "Program cann't run without a SQL configuration.You should config the SQL connection by running CSFramework.Tools.SqlConnector.exe!"); } } } /// /// 从系统注册表读取SQL连接配置 /// public class RegisterWriter : IWriteSQLConfigValue { private string _keyPath; /// /// 构造器 /// /// 注册表位置 public RegisterWriter(string keyPath) { _keyPath = keyPath; Read(); } public string ServerName { get; set; } public string DatabaseName { get; set; } public int Port { get; set; } public string UserName { get; set; } public string Password { get; set; } public string DatabaseType { get; set; } public string ConnectionString { get; set; } /// /// 读取配置 /// public void Read() { var key = Registry.LocalMachine.CreateSubKey(_keyPath); if (key != null) { ConnectionString = KeyProvider.Default.Decrypt( ConvertEx.ToString(key.GetValue("ConnectionString", ""))); DatabaseType = ConvertEx.ToString(key.GetValue("DatabaseType", "")); ServerName = ConvertEx.ToString(key.GetValue("ServerName", "")); Port = ConvertEx.ToInt(key.GetValue("Port", "")); DatabaseName = ConvertEx.ToString(key.GetValue("DatabaseName", "")); UserName = ConvertEx.ToString(key.GetValue("UserName", "")); Password = KeyProvider.Default.Decrypt( ConvertEx.ToString(key.GetValue("Password", ""))); key.Close(); } } /// /// 写入配置 /// public void Write() { var key = Registry.LocalMachine.CreateSubKey(_keyPath); if (key != null) { key.SetValue("ConnectionString", KeyProvider.Default.Encrypt(ConnectionString)); key.SetValue("DatabaseType", DatabaseType); key.SetValue("ServerName", ServerName); key.SetValue("Port", Port); key.SetValue("DatabaseName", DatabaseName); key.SetValue("UserName", UserName); key.SetValue("Password", KeyProvider.Default.Encrypt(Password)); key.Close(); } } } /// /// 从web.config文件读取SQL连接配置 /// public class WebConfigCfg : IWriteSQLConfigValue { public WebConfigCfg(string databaseType, string connectionString) { ConnectionString = connectionString; DatabaseType = databaseType; } public void Write() { // } public void Read() { // } public string ServerName { get; set; } public string DatabaseName { get; set; } public int Port { get; set; } public string UserName { get; set; } public string Password { get; set; } public string DatabaseType { get; set; } public string ConnectionString { get; set; } } }