zoukankan      html  css  js  c++  java
  • 让数据库访问组件支持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() ");
                }
            }

      

  • 相关阅读:
    又爱又恨的eval
    http_build_query 这个方法会把值为NULL的给干掉
    allow_url_fopen设置
    纠结了下 B 和 STRONG标签区别
    Drupal 发邮件模块 drupal smtp 安装与设置
    php array_merge 和 两数组相加区别
    学历严格正相关于素质 Kai
    表语就是主语补语,靠 Kai
    一些真正有思想的up Kai
    光速不变且最大,换个思路想,非常合理,犹如天经地义【转载】 Kai
  • 原文地址:https://www.cnblogs.com/top5/p/1949110.html
Copyright © 2011-2022 走看看