本文共 1486 字,大约阅读时间需要 4 分钟。
以前一直以为把数据库访问层已经写得很完美了,今天无意中一个客户提醒、现在的数据库访问层不只是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
转载地址:http://objta.baihongyu.com/