文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程数据库使用设计模式构建通用数据库访问类
精品推荐
特别推荐
·SQL数据库完全使用手册
·进阶:精妙SQL语句介绍
·sql删除记录
·学习SQL语句之SQL语句大全
·数据备份失败的五个原因及解决办法
·解决SQL Server常见的七个经典问题
·SQL存储过程的概念,创建,调用,管理,删除,优点
·带你轻松接触13个数据库术语
·如何恢复系统数据库如何恢复系统数据库?
·通过实例讲解由浅入深学会存储过程
·学会三个范式快速成为数据库设计的高手
·SQL数据库应聘人员面试时经常被问的问题
·问答:查询分析器不能单步调试的的原因
·数据库基础知识:SQL中的IIF语句详解
·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
·你知道吗?优化数据库前的十大问题
·自动备份注意事项让你远离误删数据噩梦
·关于MSSQL数据库日志满的快速解决办法
·SQL安全设置攻略
·SQL注入的不常见方法
热点TOP10
·数据结构(C#)_排序算法(冒泡排序)
·数据备份失败的五个原因及解决办法
·如何恢复系统数据库如何恢复系统数据库?
·通过分析SQL语句的执行计划优化SQL(二)
·自动备份注意事项让你远离误删数据噩梦
·在DataTable中查询应该注意的问题
·数据库初学者:掌握数据操纵语言命令
·使用FileWriter可以写UTF-8的解决方法
·SQL存储过程的概念,创建,调用,管理,删除,优点
·教你如何读取Excel数据并导入DB2数据库
·教你简单七招 轻松实现Web数据库的安全
·帮你精细分析各种类型数据库的死锁问题
·collate chinese_prc_ci_as null 是什么意思
·一个简单的酒店系统的数据库设计
·如何实现将vsflexgrid中修改的数据反馈到数据库中
·通过分析SQL语句的执行计划优化SQL(一)
·sqlldr使用小结
·学习SQL语句之SQL语句大全
·使用DatabaseMetaDate获取数据库信息
·utl_file使用总结

使用设计模式构建通用数据库访问类

日期:2005年4月25日 作者:清风网络学院 查看:[大字体 中字体 小字体]


在应用程序的设计中,数据库的访问是非常重要的,我们通常需要将对数据库的访问集中起来,以保证良好的封装性和可维护性。在.Net中,数据库的访问,对于微软自家的SqlServer和其他数据库(支持OleDb),采用不同的访问方法,这些类分别分布于System.Data.SqlClient和System.Data.OleDb名称空间中。微软后来又推出了专门用于访问Oracle数据库的类库。我们希望在编写应用系统的时候,不因这么多类的不同而受到影响,能够尽量做到数据库无关,当后台数据库发生变更的时候,不需要更改客户端的代码。

有的时候,为了性能和其他原因,我们也希望提供对数据库访问的缓存,特别是数据库连接的缓存。虽然微软给我们内置了数据库缓存,但是,自己控制缓存,无疑可以提供更大的灵活性和效率。

这就需要我们在实际开发过程中将这些数据库访问类再作一次封装。这里,介绍一种在实际应用中得到了非常好的效果的实作策略。Factory和Silgleton设计模式是使用的主要方法。

我们先来看看Factory的含义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。我们这里可能会处理对多种数据库的操作,因此,需要首先定义一个操纵数据库的接口,然后,根据数据库的不同,由类工厂决定实例化哪个类。

下面,我们首先来定义这个访问接口。为了方便说明问题,我们为这个类定义了比较少的方法,其他的方法是很容易参照添加的。同时注意,我这里使用了abstract class来定义这个访问接口,而不是interface,理由在后面可以看到。

public abstract class DBOperator
{
public abstract IDbConnection Connection{get;} //得到数据库连接
public abstract void Open(); //打开数据库连接
public abstract void Close(); //关闭数据库连接
public abstract void BeginTrans(); //开始一个事务
public abstract void CommitTrans(); //提交一个事务
public abstract void RollbackTrans(); //回滚一个事务
public abstract void exeSql(string strSql,string[] strParams,object[] objValues);
//执行Sql语句,没有返回值
public abstract DataSet exeSqlForDataSet(string QueryString);//执行Sql,返回DataSet
}

然后,我们分别为Sql Server和OleDb数据库编写两个数据访问的具体实现类:

Sql Server的数据库访问类:

internal class SqlDBOperator: DBOperator
{
private SqlConnection conn; //数据库连接
private SqlTransaction trans; //事务处理类
private bool inTransaction=false; //指示当前是否正处于事务中
public override IDbConnection Connection
{
  get{return this.conn;}
}
public SqlDBOperator(string strConnection)
{
  this.conn= new SqlConnection(strConnection);
}
public override void Open()
{
  if(conn.State.ToString().ToUpper()!="OPEN")
     this.conn.Open();
}
public override void Close()
{
  if (conn.State.ToString().ToUpper()=="OPEN")
this.conn.Close();
}
public override void BeginTrans()
{
  trans=conn.BeginTransaction() ;
    inTransaction=true;
}
public override void CommitTrans()
{
  trans.Commit();
    inTransaction=false;
}
public override void RollbackTrans()
{
  trans.Rollback();
    inTransaction=false;
}
public override void exeSql(string strSql,string[] strParams,object[] strValues)
{
  SqlCommand cmd=new SqlCommand();
  cmd.Connection=this.conn ;
  if(inTransaction)
    cmd.Transaction=trans;

[1] [2] [3] [4] 下一页 




上一篇:Excel中双击格式刷的妙用

下一篇:40条最让人误会的手机短信

使用设计模式构建通用数据库访问类 相关文章:
·IE7.0浏览器有用的9个使用技巧
·GHOST使用方法(图解)
·溯雪使用说明
·Vista系统使用技巧总结
·教您如何使用无线上网全攻略
·电脑使用一段时间后会变慢原因解析
·如何以安全模式启动计算机
·TninkPad笔记本电池使用指南
·QQ空间导航代码最新版使用方法
·为什么iexplore.exe在打开网页时CPU使用会100%?
使用设计模式构建通用数据库访问类 相关软件:
·黑客视频教程 VMware虚拟机的安装和使用
·C语言程序设计
·Dreamweaver 网页设计
·使用GPMC随心所欲管理组策略
·黑客视频教程-灰鸽子远控使用教程
·Adobe Photoshop CS 2 简体中文使用指南
·美工设计教程
·Photoshop CS经典创意设计200例
·颐家IDO在线互动设计软件
·Photoshop CS中文版平面设计师标准案例教程

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot