在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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM