回 帖 发 新 帖 刷新版面

主题:12

最近看到一个程序,有些细节问题怎么也看不懂,就是IDispose的用法,还有一些其他的,看了MSDN,上面的话太专业了,有点看天书的感觉,希望各位高手不吝赐教。
下面是这个程序中的一个DLL块。主要看不懂的就是最结尾处的一点点。
using System;
using System.Data;
using System.Data.SqlClient;

namespace Aptech.Student.Common
{
    public class DataBaseOperate:IDisposable
[color=FF0000]/*为什么要继承IDispose类呢?*/[/color]
    {
        private string m_sConnectionString;
        // 数据库连接标志
        private bool m_bConnected;
        // 存储过程开启标志
        private bool m_bTransaction;
        //数据库连接对象
        private SqlConnection m_sqlConnection;
        private SqlCommand m_sqlCommand;
        private SqlTransaction m_sqlTransaction;
        private SqlDataAdapter m_sqlDataAdapter;
        
        public DataBaseOperate():this("user id=sa;password=510902;data source=\"YAOYANG\\YAOYANG\";initial catalog=Student")
        {
        }
        
        public DataBaseOperate(
            string sConnectionString)
        {
            if (sConnectionString != "")
            {
                m_sConnectionString = sConnectionString;
                m_bConnected = false;
            }
            m_bTransaction = false;
        }

        /// <summary>
        /// 连接数据库,并打开数据库连接
        /// </summary>
        /// <returns>成功返回true</returns>
        private bool ConnectDataBase()
        {
            if (!m_bConnected)
            {
                try
                {
                    if (m_sqlConnection == null)
                    {
                        m_sqlConnection = new SqlConnection(m_sConnectionString);
                        m_sqlConnection.Open();
                    }

                    if (m_sqlCommand == null)
                    {
                        m_sqlCommand = new SqlCommand();
                    }
                    m_bConnected = true;
                    m_sqlCommand.Connection = m_sqlConnection;
                }
                catch(SqlException e)
                {
                    throw e;
                }
            }
            return true;
        }
        
        /// <summary>
        /// 关闭数据库,释放数据库资源
        /// </summary>
        /// <returns>成功返回true</returns>
        public bool CloseDataBase()
        {
            Dispose();
            return true;
        }


                throw(new ApplicationException("没有建立数据库连接。"));
    
            {
                m_sqlDataAdapter.Fill(
                    dataSet,
                    sTableName);
            }
            catch(SqlException e)
            {
                //如果正在执行事务,回滚
                if(m_bTransaction)
                {
                    m_sqlTransaction.Rollback();
                }
                throw e;
            }
            return dataSet;
        }

        
        /// <summary>
        ///  执行修改数据库操作,修改、删除等无返回值的操作
        /// </summary>
        /// <param name="sSql">执行的SQL语句</param>
        /// <returns>成功执行返回True</returns>
        public bool Execute(
            string    sSql)
        {
            
            if (!ConnectDataBase())
            {

                if(m_bTransactio

回复列表 (共2个回复)

沙发

对不起,这个帖子是误发的,非常抱歉!!

板凳

[fly]晕~最近真是...[/fly]

我来回复

您尚未登录,请登录后再回复。点此登录或注册