在我们面开发或者程序设计时,都接触过如SqlHelper、MySqlHelper、OraceHelper等数据访问层。数据访问层是程序和数据库之间的桥梁,如果想要连接数据库需要打开SqlConnection 等连接对象,一个种数据库就需要单独写一个数据访问层,如果系统再扩展就会使开发人员和系统不堪重负。
为了解决多个数据库访问的问题官方提供了一个DbProviderFactory接口。
本章我们介绍DbProviderFactory数据库提供者工厂。
DbProviderFactory数据库连接工厂
如图所示,
1.DbProviderFactory 是一个抽象类,在 System.Data.Common命名空间。
2.提供了DbConnection、DbCommand、DbDataAdapter、DbConnectionStringBuilder等对象,这些对象是连接数据库的基本对象。
3.MSSQL、MySql、Sqlite、Orace等连接都是继承自DbConnection,增删改查的对象继承自DbCommand。
4. MSSQL、MySql等都会继承这个类。如System.Data.SqlClient.dll MSSQL的数据驱动可以在此模块下得到数据库工厂的实例。
DbProviderFactory是一个高度抽象类,我们做开发时完全可以面向DbProviderFactory完成数据层的设计。
代码示例
以数据库连接工厂创建MSSQL数据访问层为例。MSSQL的数据驱动为System.Data.SqlClient.dll,从驱动中等到数据库工厂实例。
DbProviderFactory有两种获取方式:
1.在App.config配置连接,通过DbProviderFactories.GetFactory("System.Data.SqlClient");
如果是单机项目,或者客户端项目 数据库操作比较固定可以使用第一种方式,这种是配置操作简单
2.通过反射从System.Data.SqlClient.dll驱动中获取,这种方式比较灵活,适合系统中使用多数据库操作
我们以反射方式获取数据库抽象类
图中创建了MSSQL的数据库连接,SQLite、MySql、Orace等依赖于数据库连接工厂接口,我们在做程序设计时面向接口设计,使数据驱动伸缩性更强。
总结
MSSQl、MySql、Orace等都可以面向数据库工厂设计数据层,不再依赖具体SqlConntion、SqliteConn等对象。
本文暂时没有评论,来添加一个吧(●'◡'●)