⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultprovider.cs

📁 此项目是用asp.net开发的航班查询系统
💻 CS
字号:
using System;
using System.Collections;
using System.Data;

namespace OceanSoft.Data
{
	/// <summary>
	/// 通用数据访问接口默认实现类
	/// </summary>
	public abstract class DefaultProvider:ICommonAccess
	{
		/// <summary>
		/// 连接对象,此时为接口
		/// </summary>
		protected IDbConnection		Conn=null;

        /// <summary>
        /// 命令对象,此时为接口
        /// </summary>
		protected IDbCommand		Cmd;

        /// <summary>
        /// 事务对象,此时为接口
        /// </summary>
		private IDbTransaction	Trans;

		//定义属性维持变量
		private string		m_CommandString;
		private Hashtable	m_CommandParams;
		private bool		m_IsStoredProcedure;

		#region ICommonAccess 成员

        /// <summary>
        /// 命令字符串属性
        /// </summary>
		public string CommandString
		{
			get{return m_CommandString;}
			set{m_CommandString=value;}
		}

        /// <summary>
        /// 命令对象的参数集属性
        /// </summary>
		public Hashtable CommandParams
		{
			get{return m_CommandParams;}
			set{m_CommandParams=value;}
		}

        /// <summary>
        /// 是否为存储过程属性
        /// </summary>
		public bool IsStoredProcedure
		{
			get{return m_IsStoredProcedure;}
			set{m_IsStoredProcedure=value;}
		}

        /// <summary>
        /// 启动事务
        /// </summary>
		public void BeginTrans()
		{
			this.Open();
			this.Trans=this.Conn.BeginTransaction();
			this.Cmd.Transaction=this.Trans;
		}

        /// <summary>
        /// 提交事务
        /// </summary>
		public void CommitTrans()
		{
			this.Trans.Commit();
		}

        /// <summary>
        /// 回滚事务
        /// </summary>
		public void RollbackTrans()
		{
			this.Trans.Rollback();
		}

        /// <summary>
        /// 打开数据库连接,并创建命令对象
        /// </summary>
		public void Open()
		{
			if(this.Conn.State!=ConnectionState.Open)
			{
				this.Conn.Open();
				this.Cmd=Conn.CreateCommand();
			}
		}

        /// <summary>
        /// 关闭连接
        /// </summary>
		public void Close()
		{
			if(this.Conn.State==ConnectionState.Open)
				this.Conn.Close();
		}

        /// <summary>
        /// 得到数据库连接对象
        /// </summary>
        /// <returns></returns>
		public IDbConnection GetConnection()
		{
			this.Open();
			return this.Conn;
		}

        /// <summary>
        /// 得到命令对象
        /// </summary>
        /// <returns></returns>
		public IDbCommand GetCommand()
		{
			this.Open();
			return this.Cmd;
		}

        /// <summary>
        /// 得到空数据适配器对象
        /// </summary>
        /// <returns>空数据适配器对象</returns>
		public abstract IDbDataAdapter GetNullDataAdapter();

        /// <summary>
        /// 设置参数的方法
        /// </summary>
		protected abstract void SetParams();

		/// <summary>
		/// 根据属性值,填充命令
		/// </summary>
		private void FillCommand()
		{
			this.Open();

			this.Cmd.CommandText=m_CommandString;

            if(m_IsStoredProcedure)
            {
                this.Cmd.CommandType=CommandType.StoredProcedure;
            }
            else
                this.Cmd.CommandType=CommandType.Text;

			if(m_CommandParams!=null || this.m_IsStoredProcedure)
			{
				SetParams();
			}
		}

        /// <summary>
        /// 得到数据流对象
        /// </summary>
        /// <returns>相应的数据流对象</returns>
		public IDataReader GetDataReader()
		{
			this.FillCommand();
			return this.Cmd.ExecuteReader();
		}

        /// <summary>
        /// 执行命令对象,得到受影响的行数或存储过程的返回值
        /// </summary>
        /// <returns>受影响的行数或存储过程的返回值</returns>
		public int RunSql()
		{
			this.FillCommand();
            int rt = 0;
            if(this.m_IsStoredProcedure)
            {
                this.Cmd.ExecuteNonQuery();
                rt = this.GetReturnValue();
            }
            else
            {
                rt = this.Cmd.ExecuteNonQuery();
            }
			return rt;
		}

        /// <summary>
        /// 得到存储过程的返回参数值
        /// </summary>
        /// <returns></returns>
        protected abstract int GetReturnValue();

        /// <summary>
        /// 得到运行结果集中首行首列的值
        /// </summary>
        /// <returns>首行首列的值</returns>
		public object GetScalar()
		{
			this.FillCommand();
			return this.Cmd.ExecuteScalar();
		}

        /// <summary>
        /// 查询得到数据集的方法
        /// </summary>
        /// <param name="mTableName">数据集中的表名</param>
        /// <returns>对应的DataSet</returns>
		public DataSet GetDataSet(string mTableName)
		{
			DataSet ds=new DataSet();
			IDbDataAdapter da=this.GetNullDataAdapter();
			this.FillCommand();
			da.SelectCommand=this.Cmd;
			da.Fill(ds);
			if(mTableName!=null)
				ds.Tables[0].TableName=mTableName;
			return ds;
		}

        /// <summary>
        /// 查询得到数据集的方法
        /// </summary>
        /// <returns>对应的DataSet</returns>
		public DataSet GetDataSet()
		{
			return this.GetDataSet(null);
		}

        /// <summary>
        /// 查询得到数据表的方法
        /// </summary>
        /// <param name="mTableName">表名</param>
        /// <returns>对应的DataTable</returns>
		public DataTable GetDataTable(string mTableName)
		{
			return this.GetDataSet(mTableName).Tables[0];
		}

        /// <summary>
        /// 查询得到数据表的方法
        /// </summary>
        /// <returns>对应的DataTable</returns>
        public DataTable GetDataTable()
		{
			return this.GetDataTable(null);
		}

        /// <summary>
        /// 填充数据集的方法
        /// </summary>
        /// <param name="mDataSet">数据集对象</param>
        public void Fill(DataSet mDataSet)
        {
            this.FillCommand();
            IDbDataAdapter da = this.GetNullDataAdapter();
            da.SelectCommand = this.Cmd;
            da.Fill(mDataSet);
        }

        /// <summary>
        /// 填充数据表的方法
        /// </summary>
        /// <param name="mDataTable">数据表对象</param>
        public void Fill(DataTable mDataTable)
        {
            this.FillCommand();
            IDbDataAdapter da = this.GetNullDataAdapter();
            da.SelectCommand = this.Cmd;
            this.FillTable(da,mDataTable);
        }

        /// <summary>
        /// 通过派生类对数据表进行填充
        /// </summary>
        /// <param name="da">用于填充的适配器对象</param>
        /// <param name="mDataTable">数据表对象</param>
        protected abstract void FillTable(IDbDataAdapter da,DataTable mDataTable);

		#endregion
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -