在VS2012中用工厂模式设计一个支持多种数据库的查询分析器

    前一段时间正好在学习设计模式,刚好Vs2012又发布了,所以就决定用它们来设计一个例子程序。

    可能很多程序员在开发程序时都会涉及到多种数据库的访问问题,有时候不对于不同的数据库类型要采用不同的数据驱动类,

如:SqlClient,OracleClient等。这样在使用时可能感觉非常不方便,虽然方法与参数都差不多,但类型却不一样,一日切换一种数据源,

就得修改对应代码,尤其是那些专门写业务服务的开发人员...。

    于是我们就希望有一种万能的DBClient,只要告诉它连接的数据库类型与访问信息,它就能为你创建一个Db代理,你只需要发送给它

与我们业务相关的SQL,它就能返回一种统一的数据类型(如DataTable、DataReader或者XML格式数据)。这样我们使用时就不用考虑

那么多返回值类型的问题。

     基于上边的分析,我们知道可以使用设计模式中的简单工厂实现上面的需求,而且在VS2012中加强了Oledb数据访问的性能,于是

我们可以使用简单工厂来实现基于Oledb的多数据库查询。

     第一步,我们先建立一个数据库连接配置的抽象类或者接口(IDBConfig),它主要包含一些用于连接数据库服务器的信息,如:

     第二步,我们需要建立个几种接收数据返回值的数据返回类,它主要包含返回成功或者失败标识,错误信息,如:

  

       另外我们可能需要更具体的返回值,那么我们分别建立几个它子类,用于接收DataTable、DataReader、

以及纯Text类型的数据,如:  

      

      第三步,我们需要建立一个数据库抽象类或者接口(IDB),它继承自IDBConfig,因为每个库要有连接配置信息,当然

我们可以将IDBConfig定义为IDB的一个属性,但为了方便转换,暂时使用继承实现,如:

  

     第四步,在完成了以上几步之后,本来可以分别去实现上一步中的数据库接口了,但是经过分析后发现,其实如果我们用Oledb来实现的话

只有连接串不一样,其它都方法都一至,于是我们先建立一个基础库类DataBase以继承第三步中的IDB,它先实现除拼接连接串以外的所有方

法,同时为了方便了类重写一些特殊方法,我们将其标识为virtual,如:

       

     第五步,现在可以分别建立不同种类数据库子类了,如:SqlServer、Db2、Oracle等,它们都继承自DataBase类,如Oracle:

   

     第六步,最后我们要建立本例子中最重要的数据库工厂(DBFactory)了,它是一个静态类,并且提供一个建立具体数据库的方法,如:

    

       第七步,用Vs2012,WPF建立测试程序,最终展示效果如下:

          A. 使用数据库工厂

        

          B. 登录会话

         

          C.查询主界面

          

         程序文件地址:http://files.cnblogs.com/chinawen/E-SQL.zip

 

转载于:https://www.cnblogs.com/chinawen/archive/2012/09/27/StaticFactoryForMutiDBQuery.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值