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; }
}
}