文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程数据库使用设计模式构建通用数据库访问类
精品推荐
特别推荐
·学习SQL语句之SQL语句大全
·数据备份失败的五个原因及解决办法
·解决SQL Server常见的七个经典问题
·SQL存储过程的概念,创建,调用,管理,删除,优点
·带你轻松接触13个数据库术语
·如何恢复系统数据库如何恢复系统数据库?
·通过实例讲解由浅入深学会存储过程
·学会三个范式快速成为数据库设计的高手
·SQL数据库应聘人员面试时经常被问的问题
·问答:查询分析器不能单步调试的的原因
·数据库基础知识:SQL中的IIF语句详解
·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
·你知道吗?优化数据库前的十大问题
·自动备份注意事项让你远离误删数据噩梦
·关于MSSQL数据库日志满的快速解决办法
·SQL安全设置攻略
·SQL注入的不常见方法
·关于SQL语句的优化方式
·SQL优化34条
·查询及删除重复记录的方法
热点TOP10
·学习SQL语句之SQL语句大全
·玩转Windows桌面图标
·精妙SQL语句收集
·Transact-SQL语句总汇
·了解SQL语句的功能,快速学会SQL语句
·ADO连接数据库字符串大全
·ASP.NET中数据库的操作初步----DataSet操作数据库
·101个微软提供的Visual Studio 2005示例
·Apache+php+mysql安装与配置详解
·SQL优化34条
·用独立的DLL来存储图片(资源文件)
·一个简单的酒店系统的数据库设计
·如何在GridView中一次性批量更新多行数据
·通过Remoting service上传文件
·VB.NET的数据库基础编程(1)
·什么是SQL注入法攻击
·使用设计模式构建通用数据库访问类
·QQ聊天记录器演示程序(一)
·数据库基础知识:SQL中的IIF语句详解
·SQL查询语句精华使用简要

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

日期: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;
  if((strParams!=null)&&(strParams.Length!=strValues.Length) )
throw new ParamValueNotMatchException("查询参数和值不对应!");
cmd.CommandText=strSql;
  if(strParams!=null)
{
  for(int i=0;i cmd.Parameters.Add(strParams[i],strValues[i]);
}
  cmd.ExecuteNonQuery();
}
public override DataSet exeSqlForDataSet(string QueryString)

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




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

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

使用设计模式构建通用数据库访问类 相关文章:
·Windows无法访问指定设备,路径或文件.您可能没有合适的权限访问这个项目
·局域网内共享文件 提示没有访问权限的问题
·Access 通用数据访问类(asp.net 2.0 c#)
·外网用户如何访问内网FTP服务器
·加密也挡不住我 网站访问一步到位!
·多个技巧让局域网内互访无障碍
·男妓是怎样干活的——记者暗访鸭群
·叶子猪大话攻略:高处不胜寒-大话西游第一人访谈
·NAT外网访问内网方法
·绕道访问国外网站 免费代理服务器放送
使用设计模式构建通用数据库访问类 相关软件:
·央视访谈节目—《艺术人生》
·亦凡酷站访问统计系统
·水云间访问统计系统
·CCTV心理访谈 直勾勾的眼神
·Office2000语言与数据访问参考手册
·阿江酷站访问统计系统 V1.3 020523
·阿江酷站访问统计系统 v1.0
·伊凡访问统计系统v2.0
·定时自动访问指定网址
·标识和访问管理(上)

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