调用DbHelperACE获取OleDbDataReader后手动关闭连接方法

12 篇文章 0 订阅
8 篇文章 0 订阅

数据访问抽象基础类(ACCESS) DbHelperACE中有ExecuteReader(string strSQL)方法:

        /// <summary>    
        /// 执行查询语句,返回OleDbDataReader(使用该方法切记要手工关闭OleDbDataReader和连接)    
        /// </summary>    
        /// <param name="strSQL">查询语句</param>    
        /// <returns>SqlDataReader</returns>    
        public static OleDbDataReader ExecuteReader(string strSQL)
        {
            OleDbConnection connection = new OleDbConnection(connectionString);
            OleDbCommand cmd = new OleDbCommand(strSQL, connection);
            try
            {
                connection.Open();
                OleDbDataReader myReader = cmd.ExecuteReader();
                return myReader;
            }
            catch (System.Data.OleDb.OleDbException e)
            {
                throw new Exception(e.Message);
            }
            //finally //不能在此关闭,否则,返回的对象将无法使用    
            //{    
            //  cmd.Dispose();    
            //  connection.Close();    
            //}      
        }

这里没提供手工关闭OleDbDataReader和连接的方法。具体调用时如何手工关闭没有例子可查。

我使用以下方法,是否可行待大家讨论。

        public class XXXXCollection : System.Collections.ObjectModel.ObservableCollection<DataItem>
        {
        }
        private XXXXCollection _Collection = GetXXXXData();

        public XXXXCollection Collection
        {
            get
            {
                return this._Collection;
            }
        }
	public static XXXXCollection GetXXXXData()  //获取数据 
        {
            OleDbConnection con = new OleDbConnection(DbHelperACE.connectionString);
            string sql = string.Format(……);
            XXXXCollection xxxx = new XXXXCollection();
            OleDbDataReader myreader = DbHelperACE.ExecuteReader(sql);
            while (myreader.Read())
            {
                DataItem axxxx = new DataItem(……);
                xxxx.Add(axxxx);
            }
            con.Open();
            OleDbCommand cmd = new OleDbCommand("",con);
            myreader = cmd.ExecuteReader(CommandBehavior.CloseConnection); //手工关闭OleDbDataReader和连接
            cmd.Dispose();
            con.Close();
            return xxxx;
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落单枫叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值