以前一直以為把資料庫通路層已經寫得很完美了,今天無意中一個客戶提醒、現在的資料庫通路層不隻是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,如需轉載請自行聯系原作者