数据库解耦源码

创建数据库接口:

namespace DataModels.IDBHandler
{
    /// <summary>
    /// 配置参数 数据库操作基类
    /// </summary>
    public interface IDBCreater
    {
        int Createtable();
    }
}

DBBase 类:

using System.Configuration;
using ToolsPakage;
namespace DataModels.IDBHandler
{
    public class DBBase
    {
        public static string ConnString = Security.DecryptDES(ConfigurationManager.AppSettings["dbConn"]);
    }
}

SqliteCreater:

public class SqliteCreater : IDBCreater
    {
        DbUtility utility;
        string path = AppDomain.CurrentDomain.BaseDirectory + "Alarm.db";
        string source = @"data source={0};version=3";
        public SqliteCreater()
        {
            DBBase.ConnString = string.Format(source,path);
            utility = new DbUtility();
        }
        public int Createtable()
        {
            if(File.Exists(path))
            {
                return 0;
            }
            try
            {
                if (!CreateTableConfigINFO())
                {
                    return -1;
                }
                if (!CreateTableCompanyInfo())
                {
                    return -1;
                }
                if (!CreateTableUserInfo())
                {
                    return -1;
                }
                if (!CreateTableLog())
                {
                    return -1;
                }
                if (!CreateTableOpratorFunction())
                {
                    return -1;
                }
                if (!CreateTableFacility())
                {
                    return -1;
                }
                if (!CreateTableContacts())
                {
                    return -1;
                }
                if (!InsertAdmin())
                {
                    return -1;
                }
                if(!CreateTableGroup())
                {
                    return -1;
                }
                return 1;
            }
            catch
            {
                return -1;
            }
        }
    }

DbUtility 类包含一下代码以及一些基本数据库操作代码(通用):

public string ConnectionString { get; set; }
        private DbProviderFactory providerFactory;
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="providerType">数据库类型枚举,参见<paramref name="providerType"/></param>
        public DbUtility()
        {
            ConnectionString = DBBase.ConnString;
            string privoder = System.Configuration.ConfigurationManager.AppSettings["dbPrivoder"];
            DbProviderType type = (DbProviderType)Enum.Parse(typeof(DbProviderType), privoder);
            providerFactory = ProviderFactory.GetDbProviderFactory(type);
            if (providerFactory == null)
            {
                throw new ArgumentException("Can‘t load DbProviderFactory for given value of providerType");
            }
        }

SqliteProvider:

public class SQLitePrivoder : DbProviderFactory
    {
        public override DbCommand CreateCommand()
        {
            DbCommand command = new SQLiteCommand();
            return command;
        }

        public override DbConnection CreateConnection()
        {
            DbConnection conn = new SQLiteConnection();
            return conn;
        }

        public override DbDataAdapter CreateDataAdapter()
        {
            DbDataAdapter ada = new SQLiteDataAdapter();
            return ada;
        }

        public override DbParameter CreateParameter()
        {
            DbParameter para = new SQLiteParameter();
            return para;
        }
    }

业务逻辑操作接口:

public interface ILogHandler
    {
        bool Add(TabLog model);
        bool Update(TabLog model);
        bool Delete(long ID);
        bool DeleteList(string IDlist, out int count);
        TabLog GetModel(long ID);
        TabLog DataRowToModel(DataRow row);
        DataTable GetLogDataSetByWhere(string where);
        DataTable GetDataTableByPage(int pageSize, int pageIndex, out int pageCount);
    }

业务逻辑实现:

public class TabLogHandler : ILogHandler
    {
        DbUtility utility;
        string path = AppDomain.CurrentDomain.BaseDirectory + "Alarm.db";
        string source = @"data source={0};version=3";
        public TabLogHandler()
        {
            DBBase.ConnString = string.Format(source, path);
            utility = new DbUtility();
        }

业务逻辑接口工厂:

/// <summary>
    /// 返回抽象处理接口
    /// </summary>
    public class HandlerFactory
    {
        static string privoder = System.Configuration.ConfigurationManager.AppSettings["dbPrivoder"];
        private static Dictionary<DbProviderType, IComInfoHandler> _comInfoDic = new Dictionary<DbProviderType, IComInfoHandler>();
        private static Dictionary<DbProviderType, IContractsHandler> _contractDic = new Dictionary<DbProviderType, IContractsHandler>();
        private static Dictionary<DbProviderType, IFacilityHandler> _facilityDic = new Dictionary<DbProviderType, IFacilityHandler>();
        private static Dictionary<DbProviderType, ILogHandler> _logDic = new Dictionary<DbProviderType, ILogHandler>();
        private static Dictionary<DbProviderType, IOperatorFunctionHandler> _operatorFunDic = new Dictionary<DbProviderType, IOperatorFunctionHandler>();
        private static Dictionary<DbProviderType, IOperatorHandler> _operatorDic = new Dictionary<DbProviderType, IOperatorHandler>();
        private static Dictionary<DbProviderType, IUserInfoHandler> _userInfoDic = new Dictionary<DbProviderType, IUserInfoHandler>();
        private static Dictionary<DbProviderType, IGroupHandler> _groupDic = new Dictionary<DbProviderType, IGroupHandler>();
        private static Dictionary<DbProviderType, IDBCreater> _dbCreateDic = new Dictionary<DbProviderType, IDBCreater>();

        private HandlerFactory()
        {

        }

        public static IComInfoHandler CreateComInfoHandler()
        {
            try
            {
                return (IComInfoHandler)_comInfoDic[(DbProviderType)Enum.Parse(typeof(DbProviderType), privoder)];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static IContractsHandler CreateContractsHandler()
        {
            try
            {
                return (IContractsHandler)_contractDic[(DbProviderType)Enum.Parse(typeof(DbProviderType), privoder)];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static IFacilityHandler CreateFacilityHandler()
        {
            try
            {
                return (IFacilityHandler)_facilityDic[(DbProviderType)Enum.Parse(typeof(DbProviderType), privoder)];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static ILogHandler CreateLogHandler()
        {
            try
            {
                return (ILogHandler)_logDic[(DbProviderType)Enum.Parse(typeof(DbProviderType), privoder)];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static IOperatorFunctionHandler CreateOperatorFunctionHandler()
        {
            try
            {
                return (IOperatorFunctionHandler)_operatorFunDic[(DbProviderType)Enum.Parse(typeof(DbProviderType), privoder)];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static IOperatorHandler CreateOperatorHandler()
        {
            try
            {
                return (IOperatorHandler)_operatorDic[(DbProviderType)Enum.Parse(typeof(DbProviderType), privoder)];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static IUserInfoHandler CreateUserInfoHandler()
        {
            try
            {
                return (IUserInfoHandler)_userInfoDic[(DbProviderType)Enum.Parse(typeof(DbProviderType), privoder)];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static IGroupHandler CreateGroupHandler()
        {
            try
            {
                return (IGroupHandler)_groupDic[(DbProviderType)Enum.Parse(typeof(DbProviderType), privoder)];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static IDBCreater CreateDBbyType()
        {
            try
            {
                return (IDBCreater)_dbCreateDic[(DbProviderType)Enum.Parse(typeof(DbProviderType), privoder)];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static bool InitDBPrivoder()
        {
            try
            {
                #region Sqlite 映射

                _comInfoDic.Add(DbProviderType.SQLite, new DataModels.SqliteHandler.TabComInfoHandler());
                _contractDic.Add(DbProviderType.SQLite, new DataModels.SqliteHandler.TabContactsHandler());
                _facilityDic.Add(DbProviderType.SQLite, new DataModels.SqliteHandler.TabFacilityHandler());
                _logDic.Add(DbProviderType.SQLite, new DataModels.SqliteHandler.TabLogHandler());
                _operatorFunDic.Add(DbProviderType.SQLite, new DataModels.SqliteHandler.TabOperatorFunctionHandler());
                _operatorDic.Add(DbProviderType.SQLite, new DataModels.SqliteHandler.TabOperatorHandler());
                _userInfoDic.Add(DbProviderType.SQLite, new DataModels.SqliteHandler.TabUserInfoHandler());
                _dbCreateDic.Add(DbProviderType.SQLite, new DataModels.DBCreater.SqliteCreater());
                _groupDic.Add(DbProviderType.SQLite, new DataModels.SqliteHandler.TabGroupHandler());

                #endregion

                #region Mysql 映射

                _comInfoDic.Add(DbProviderType.MySql, new DataModels.MySqlHandler.TabComInfoHandler());
                _contractDic.Add(DbProviderType.MySql, new DataModels.MySqlHandler.TabContactsHandler());
                _facilityDic.Add(DbProviderType.MySql, new DataModels.MySqlHandler.TabFacilityHandler());
                _logDic.Add(DbProviderType.MySql, new DataModels.MySqlHandler.TabLogHandler());
                _operatorFunDic.Add(DbProviderType.MySql, new DataModels.MySqlHandler.TabOperatorFunctionHandler());
                _operatorDic.Add(DbProviderType.MySql, new DataModels.MySqlHandler.TabOperatorHandler());
                _userInfoDic.Add(DbProviderType.MySql, new DataModels.MySqlHandler.TabUserInfoHandler());
                _dbCreateDic.Add(DbProviderType.MySql, new DataModels.DBCreater.MySqlCreater());

                #endregion

                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}

配置文件:

时间: 2024-11-06 13:42:05

数据库解耦源码的相关文章

时序数据库 Apache-IoTDB 源码解析之文件数据块(四)

上一章聊到行式存储.列式存储的基本概念,并介绍了 TsFile 是如何存储数据以及基本概念.详情请见: 时序数据库 Apache-IoTDB 源码解析之文件格式简介(三) 打一波广告,欢迎大家访问IoTDB 仓库,求一波 Star .欢迎关注头条号:列炮缓开局,欢迎关注OSCHINA博客 这一章主要想聊一聊: TsFile的文件概览 TsFile的数据块 TsFile文件概览 一个完整的 TsFile 是由图中的几大块组成,图中的数据块与索引块之间使用 1 个字节的分隔符 2 来进行分隔,这个分

时序数据库 Apache-IoTDB 源码解析之文件索引块(五)

上一章聊到 TsFile 的文件组成,以及数据块的详细介绍.详情请见: 时序数据库 Apache-IoTDB 源码解析之文件数据块(四) 打一波广告,欢迎大家访问IoTDB 仓库,求一波 Star. 这一章主要想聊聊: TsFile索引块的组成 索引块的查询过程 索引块目前在做的改进项 索引块 索引块由两大部分组成,其写入的方式是从左到右写入,也就是从文件头向文件尾写入.但读出的方式是先读出TsFileMetaData 再读出 TsDeviceMetaDataList 中的具体一部分.我们按照读

linux下PostgreSQL数据库的源码安装

实验环境>>>>>>>>>>>>>>>>>>操作系统:CentOS release 6.3 (Final)数据库版本:PostgreSQL 9.3.5 安装postgresql的依赖有 a.需要一个ISO/ANSIC编译器(至少兼容C89). b.需要GNU make: 不能使用其它make程序. c.缺省时将自动使用GNU Readline库.需要readline和readline-devel 两

手机淘宝客应用(服务端+客户端+数据库)源码项目

欢迎大家光临我的个人网店:http://shop.662p.com/shop/view8.html 这是一款比较完整的应用源码,手机淘宝客应用(服务端+客户端+数据库),客户端是Java代码实现编程,另外服务端是采用了php的常见框架实现的,代码里面有一个sql文件是数据库导入文件 ,里面的apk是用来升级的版本 设置. 文件大小:10.94 MB 服务器:thinkphp 代码里面有一个sql文件是数据库导入文件 ,里面的apk是用来升级的版本 设置update.xml 用来跟之前安装的对比版

PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)

PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更新数据库中的老网址,如果一个一个修改,很不方便,所以开发此源码,供大家学习或使用: //2.源码开发者:杨波: //3.源码开发者联系QQ:773003231: //4.源码开发者博客:http://www.cnblogs.com/phpyangbo/: //5.源码开放性:任何人都可以随意更改或使用本源

网狐678正版全套共20多款棋牌游戏完整数据库+支付源码下载

网狐678正版全套含几款捕鱼共20多款游戏完整数据库+支付接口+原版模板+商业组件免费下载. 今天发布一个网狐678的正版源码!  带捕鱼游戏等20多款游戏!完整数据库+网站前台集成支付接口+原版模板+商业组件!亲测绝对可以使用,网狐678正版内核商业版,这都是在淘宝上卖上千的源码!同样的源码,在我们这里只需要免费下载.还不心动么亲. 源码下载地址:http://www.yxkfw.com/thread-20-1-1.html

烂泥:mysql5.5数据库cmake源码编译安装

本文由秀依林枫提供友情赞助,首发于烂泥行天下. 以前也写过一篇有关mysql5.0源码编译的文章,该文章为<烂泥:mysql5.0数据库源码编译安装>.但是MySQL自5.5版本以后,就开始使用cmake 编译工具. 所以这篇文章主要是讲解如何通过cmkae编译安装mysql5.5及其以后的版本. 注意本篇文章的环境为centos6.5 64bit. cat /etc/system-release uname -a 在安装mysql数据库之前,我们首先要在系统中新建mysql运行时的用户mys

[原创]Net实现Excel导入导出到数据库(附源码)

关于数据库导出到Excel和SQLServer数据导出到Excel的例子,在博客园有很多的例子,自己根据网上搜集资料,自己做了亦歌简单的demo,现在分享出来供初学者学习交流使用. 一.数据库导入导出到Excel,比较流行的有两种方式:采用传统的office类库和采用NPOI方式. 1.传统的office类库 使用的时候,本地需要安装office才可以正常使用,而且导出速度相对比较慢.有点:支持office 2003 .office2007等. 2.采用NPOI方式 本地不需要安装office,

Servlet学习(三)Servlet编程实例-网站登录(修改版-增加数据库-附源码)

我们为刚才的那个示例Servlet学习(二)Servlet编程实例-网站登录添加上数据库,组成一个较为完整的登录功能. 在开始之前我们得首先了解下一些常用的java术语: PO(persistant object) 持久对象 在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了. 通常对应数据模型(数据库),本身还有部分业务逻辑的处理. 可以看成是与数据库中的表相映射的java对象. 最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合. PO中应该不包含