配置文件辅助类

using Utility;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using DBHelper;

namespace Test
{

    //Config表的SQL脚本

    //CREATE TABLE [Config](
    //    [Name] [varchar](800) NOT NULL,
    //    [Value] [nvarchar](Max) NULL,
    // CONSTRAINT [PK_Config] PRIMARY KEY CLUSTERED 
    //(
    //    [Name] ASC
    //)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    //) ON [PRIMARY]
    //GO
    public static class Config
    {
        /// <summary>
        /// 用法:var createTime = Config.GetValue(ConfigString.CreateTime, new DateTime(2000, 1, 1));
        /// </summary> 
        public static T GetValue<T>(string key, T defaultVaule)
        {
            T ret = (T)Convert.ChangeType(defaultVaule, typeof(T));
            try
            {
                string dbValue = GetValue(key);
                ret = (T)Convert.ChangeType(dbValue, typeof(T));
            }
            catch (Exception ex)
            {
                ex.SaveLog();
            }
            return ret;
        }

        /// <summary>
        /// 用法:Config.SetValue(ConfigString.CreateTime, DateTime.Now); 
        /// <returns></returns>
        public static bool SetValue<T>(string key, T value)
        {
            bool result = true;
            try
            {
                if (Exists(key))
                {
                    result = Update(key, value);
                }
                else
                {
                    result = Add(key, value);
                }
            }
            catch (Exception ex)
            {
                ex.SaveLog();
                result = false;
            }
            return result;
        }

        #region db操作
        private const string TABLE_NAME = "Config";

        private static bool Exists(string Name)
        {
            string sql = string.Format("select count(1) from {0} where Name=@Name", TABLE_NAME);
            StringBuilder strSql = new StringBuilder();
            strSql.AppendFormat("select count(1) from {0}", TABLE_NAME);
            strSql.Append(" where Name= @Name");
            SqlParameter[] parameters = {
                    new SqlParameter("@Name", SqlDbType.VarChar ,800)
                };
            parameters[0].Value = Name;
            return DbHelperSQL.Exists(strSql.ToString(), parameters);
        }

        private static bool Add<T>(string Name, T Value)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.AppendFormat("insert into {0}(Name,Value) values (@Name,@Value)", TABLE_NAME);
            SqlParameter[] parameters = {
                    new SqlParameter("@Name", SqlDbType.VarChar,50),
                    new SqlParameter("@Value",SqlDbType.NVarChar)};
            parameters[0].Value = Name;
            parameters[1].Value = Value.ToString();

            //这里加了验证. 防止有重复时插入不进
            try
            {
                return DbHelperSQL.ExecuteSql(strSql.ToString(), parameters) > 0;
            }
            catch (Exception ex)
            {
                ex.SaveLog();
                return false;
            }
        }

        private static bool Update<T>(string Name, T Value)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.AppendFormat("update {0} set Value=@Value where Name=@Name", TABLE_NAME);
            SqlParameter[] parameters = {
                    new SqlParameter("@Value",SqlDbType.NVarChar),
                    new SqlParameter("@Name", SqlDbType.VarChar,800)};
            parameters[0].Value = Value;
            parameters[1].Value = Name;

            return DbHelperSQL.ExecuteSql(strSql.ToString(), parameters) > 0;
        }

        private static string GetValue(string Name)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.AppendFormat("select Value from {0} where Name=@Name", TABLE_NAME);
            SqlParameter[] parameters = {
                    new SqlParameter("@Name", SqlDbType.VarChar,800)};
            parameters[0].Value = Name;
            object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
            return obj == null ? string.Empty : obj.ToString();
        }

        #endregion
    }
    public class ConfigString
    {
        public const string CreateTime = "CreateTime";
    }
}
原文地址:https://www.cnblogs.com/linmilove/p/9408076.html