【ITPUB 技术文章】让应用软件支持多种数据库操作,是应用开发软件中的一个需求。在.NET中我们可以使用System.Data.Odbc命名空间中所提供的类实现对所有数据库的操作。但是在.NET对各种不同的数据库还提供了特有的数据提供程序。
如:访问SQL Server数据库可以使用System.Data.SqlClient命名空间下的类;访问Oracle数据库可以使用 System.Data.OracleClient命名空间下的类。利用这些特有的数据库提供程序可以获得更高的性能。所以在开发软件的过程中,我们需要设计一种模式用来支持利用特定的数据库提供程序访问特定的数据库,而不是统一使用ODBC连接。
工厂模式是支持多种数据库操作的一个常用方法。“工厂模式”在博客园中有多篇文章介绍,在这里我就不多讲了。在DotNetNuke(以下简称 DNN)中就是利用.NET中反射的原理简化了工厂类的代码,并且实现了动态创建对象实例的功能,避免了新增数据库种类需要重新编译主程序的问题。在 DNN中通过web.config配置文件的自定义配置节点,配置具体数据库访问的Provider,并设置应用程序默认数据库访问Provider。通过修改配置文件,就能够达到添加和修改应用程序所访问的具体数据库。在DNN中,各种具体数据库访问Provider,都继承一个名为 DataProvider的数据访问工厂类。该类动态的构造配置文件中所设置的默认的具体数据访问Provider。
静态结构图如下: