前一段时间正好在学习设计模式,刚好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