天天看點

讓資料庫通路元件支援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>

publicabstractclass BaseDbHelper : IDisposable // IDbHelper

   {

       代碼省略

publicvoid 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;

       }

   }

}

  經過測試,順利調試成功,又完善了一下,心裡舒坦了很多。

privatevoid TestUsing()

using (IDbHelper dbHelper =new SqlHelper(BaseSystemInfo.UserCenterDbConnection))

               dbHelper.ExecuteNonQuery(" SELECT GETDATE() ");

  客戶多了有一個好處,很多問題都會得到及時的回報,同時修改一個錯誤,改進了功能,又有幾十幾百的客戶收益,會很有成就感。

本文轉自 jirigala 51CTO部落格,原文連結:http://blog.51cto.com/2347979/1200877,如需轉載請自行聯系原作者