知识大全 运用设计模式构建通用数据库访问类

Posted 数据库

篇首语:刑天舞干戚,猛志固常在。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 运用设计模式构建通用数据库访问类相关的知识,希望对你有一定的参考价值。

这就需要我们在实际开发过程中将这些数据库访问类再作一次封装 经过这样的封装 不仅可以达到上述的目标 还可以减少操作数据库的步骤 减少代码编写量 在这个方面 微软为我们提供了Application Block 但是 可惜的是目前只支持Sql Server 这里 介绍一种在实际应用中得到了非常好的效果的实作策略——笔者编写的Websharp框架中的数据访问结构 Factory设计模式是使用的主要方法   我们先来看看Factory的含义 定义一个用于创建对象的接口 让子类决定实例化哪一个类 Factory Method使一个类的实例化延迟到其子类 我们这里可能会处理对多种数据库的操作 因此 需要首先定义一个操纵数据库的接口 然后 根据数据库的不同 由类工厂决定实例化哪个类   下面 我们首先来定义这个访问接口 为了方便说明问题 我们在这里只列出了比较少的方法 其他的方法是很容易参照添加的 public interface DataAccess DatabaseType DatabaseTypeget; //数据库类型 IDbConnection DbConnectionget; //得到数据库连接 void Open(); //打开数据库连接 void Close(); //关闭数据库连接 IDbTransaction BeginTransaction(); //开始一个事务 int ExecuteNonQuery(string mandText); //执行Sql语句 DataSet ExecuteDataset(string mandText);//执行Sql 返回DataSet   因为 DataAccess的具体实现类有一些共同的方法 所以 先从DataAccess实现一个抽象的AbstractDataAccess类 包含一些公用方法 然后 我们分别为Sql Server Oracle和OleDb数据库编写三个数据访问的具体实现类 public sealed class MSSqlDataAccess : AbstractDataAccess ……//具体实现代码 public class OleDbDataAccess : AbstractDataAccess ……//具体实现代码 public class OracleDataAccess : AbstractDataAccess ……//具体实现代码   现在我们已经完成了所要的功能 下面 我们需要创建一个Factory类 来实现自动数据库切换的管理 这个类很简单 主要的功能就是根据数据库类型 返回适当的数据库操纵类 public sealed class DataAccessFactory private DataAccessFactory() private static PersistenceProperty defaultPersistenceProperty; public static PersistenceProperty DefaultPersistenceProperty   getreturn defaultPersistenceProperty;  setdefaultPersistenceProperty=value; public static DataAccess CreateDataAccess(PersistenceProperty pp) DataAccess dataAccess; switch(pp DatabaseType)   case(DatabaseType MSSQLServer):   dataAccess = new MSSqlDataAccess(pp ConnectionString);   break;  case(DatabaseType Oracle):   dataAccess = new OracleDataAccess(pp ConnectionString);   break;  case(DatabaseType OleDBSupported):   dataAccess = new OleDbDataAccess(pp ConnectionString);   break;  default:   dataAccess=new MSSqlDataAccess(pp ConnectionString);   break;  return dataAccess;public static DataAccess CreateDataAccess() return CreateDataAccess(defaultPersistenceProperty);  好了 现在 一切都完成了 客户端在代码调用的时候 可能就是采用如下形式 PersistenceProperty pp = new PersistenceProperty();pp ConnectionString = \\ server= ;uid=sa;pwd=;database=Northwind;\\ ;pp DatabaseType = DatabaseType MSSQLServer;pp UserID = sa ;pp Password = ;DataAccess db= DataAccessFactory CreateDataAccess(pp)db Open();……//db 需要的操作db Close();  或者 如果事先设定了DataAccessFactory的DefaultPersistenceProperty属性 可以直接使用DataAccess db= DataAccessFactory CreateDataAccess()方法创建DataAccess实例   当数据库发生变化的时候 只需要修改PersistenceProperty的值 客户端不会感觉到变化 也不用去关心 这样 实现了良好的封装性 当然 前提是 你在编写程序的时候 没有用到特定数据库的特性 例如 Sql Server的专用函数 cha138/Article/program/ASP/201311/21865

相关参考

知识大全 数据层组件设计与数据传递二

  实现业务实体  业务实体具有以下特点业务实体提供对业务数据及相关功能(在某些设计中)的状态编程访问业务实体可以使用具有复杂架构的数据来构建这种数据通常来自数据库中的多个相关表业务实体数据可以作为业

知识大全 ASP通用数据库操作类源代码

ASP通用数据库操作类源代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!<%=======

知识大全 在JDBC设计中加速JSP访问数据库

在JDBC设计中加速JSP访问数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JSP程序都

知识大全 Entity Framework数据转换层通用类

EntityFramework数据转换层通用类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 控制对类内部数据或函数成员访问的类

  publicclassProtectClassTest  publicstaticvoidmain(String[]args)throwsProtectClassNoAccessException

知识大全 设计.NET应用程序数据访问层五大原则

设计.NET应用程序数据访问层五大原则  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要大多数

知识大全 通用数据转换工具应用

  应用概述  通用数据转换工具在油气藏地质及开发工程国家重点实验室项目(PLN)油藏经营管理系统中作为其数据转换的功能模块之一运用于大港油田历史数据转换到新的油藏经营管理数据库中通用数据转换工具作为

知识大全 c#中的数据库访问工厂

  上午看到一个兄弟的文章很辛苦的想实现不改代码只改配置来访问不同类型的数据库自己去实现工厂模式精神可嘉但是殊不知c#已经自己为不同类型数据库的访问做了一个工厂在这里我就把使用工厂的例子贴出来供不知道

知识大全 c#中构建异常处理

  异常是程序运行中发生的错误异常处理是程序设计的一部分在c#中异常处理是通过Exception基类进行的可以创建自己的异常类但这个类必须是继承自Exception基类  异常将导致不完善或者不需要的

知识大全 数据访问与ADO.NET

数据访问与ADO.NET  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!ADONET的设计目标  A