让数据库访问组件支持Using

简介:

以前一直以为把数据库访问层已经写得很完美了,今天无意中一个客户提醒、现在的数据库访问层不只是Using语句,可能是编程习惯的原因一直不怎么用Using这个写法,的确是自己做得不好,马上针对客户的反馈意见进行了改进,增加了IDisposable接口的实现。

// ------------------------------------------------------------
//  All Rights Reserved , Copyright (C) 2010 , Jirisoft , Ltd. 
// ------------------------------------------------------------

using  System;
using  System.Data;
using  System.Data.Common;
using  System.IO;
using  System.Text;

namespace  DotNet.DbUtilities
{
    
using  DotNet.Utilities;

    
///   <summary>
    
///  BaseDbHelper
    
///  有关数据库连接的方法。
    
///  
    
///  修改纪录
    
///
    
///         2011.01.29 版本:3.1 JiRiGaLa 实现IDisposable接口。
    
///         2010.06.13 版本:3.0 JiRiGaLa 改进为支持静态方法,不用数据库Open、Close的方式,AutoOpenClose开关。
    
///         2010.03.14 版本:2.0 JiRiGaLa 无法彻底释放、并发时出现异常问题解决。
    
///         2009.11.25 版本:1.0 JiRiGaLa 改进ConnectionString。
    
///  
    
///  版本:3.1
    
///  
    
///   <author>
    
///          <name> JiRiGaLa </name>
    
///          <date> 2011.01.29 </date>
    
///   </author>  
    
///   </summary>
     public   abstract   class  BaseDbHelper : IDisposable  //  IDbHelper
    {

        代码省略

        
public   void  Dispose()
        {
            
this .dbCommand  =   null ;
            
this .dbDataAdapter  =   null ;
            
this .dbTransaction  =   null ;
            
//  关闭数据库连接
             if  ( this .dbConnection  !=   null )
            {
                
if  ( this .dbConnection.State  !=  ConnectionState.Closed)
                {
                    
this .dbConnection.Close();
                }
            }
            
this .dbConnection  =   null ;
        }
    }
}

  

   经过测试,顺利调试成功,又完善了一下,心里舒坦了很多。

         private   void  TestUsing()
        {
            
using  (IDbHelper dbHelper  =   new  SqlHelper(BaseSystemInfo.UserCenterDbConnection))
            {
                dbHelper.ExecuteNonQuery(
"  SELECT GETDATE()  " );
            }
        }

  


本文转自jirigala_bao 51CTO博客,原文链接:http://blog.51cto.com/jirigala/810679

相关文章
|
4月前
|
设计模式 Oracle 关系型数据库
二十三种设计模式全面解析-适配器模式的妙用:异构数据库和不同版本API的完美兼容!
二十三种设计模式全面解析-适配器模式的妙用:异构数据库和不同版本API的完美兼容!
|
6月前
|
前端开发 Java 数据库连接
“构建高级自定义MVC框架实现CRUD功能的完整指南“
“构建高级自定义MVC框架实现CRUD功能的完整指南“
25 0
|
存储 设计模式 API
Yii2的会话管理支持哪些驱动?底层原理是什么?
Yii2的会话管理支持哪些驱动?底层原理是什么?
|
JavaScript 前端开发 编译器
第三十九章 构建数据库应用程序 - 将数据绑定到表单
第三十九章 构建数据库应用程序 - 将数据绑定到表单
|
XML SQL Java
SSM 最灵活实现动态切换操作多数据源
SSM 最灵活实现动态切换操作多数据源
200 0
SSM 最灵活实现动态切换操作多数据源
|
SQL 数据库
Yii2框架(二)数据库相关操作
Yii2.0大概封装了两大众方法来执行数据库操作: 1:query()和queryXXX()方法,query()方法返回的是对象一般用的较少,当然,这个是对我来说,具体看你自己的需求。 2:execute方法
154 0
Yii2框架(二)数据库相关操作
|
关系型数据库 MySQL 数据库
二十九、优化数据库访问
二十九、优化数据库访问
74 0
二十九、优化数据库访问
|
SQL XML 缓存
MyBatis框架使用解析!数据库相关API的基本介绍
本篇文章中对MyBatis框架中的具体使用进行了详细的分析说明。介绍了在Java项目使用的各种API的基本方式。包括动态SQL,多数据库支持,脚本语言,Java中各种语句执行方法,SELECT语句的高级使用,清除批量更新的方法以及事务控制的方法。
152 0
MyBatis框架使用解析!数据库相关API的基本介绍
|
SQL 缓存 Oracle
1.NetDh框架之数据库操作层--Dapper简单封装,可支持多库实例、多种数据库类型等(附源码和示例代码)
1.NetDh框架开始的需求场景 需求场景: 1.之前公司有不同.net项目组,有的项目是用SqlServer做数据库,有的项目是用Oracle,后面也有可能会用到Mysql等,而且要考虑后续扩展成主从库、多库的需求。
3580 0
|
SQL PHP 数据库