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

📄 dataaccess.cs

📁 三层班级留言本源码 用VS2005写的,对于其中没有太多的技术含量, 但是还是蛮有参考价值的. 后台数据库的读写采用三层架构,没有专业的后台管理程序,所有操作都是同一个页面上进行. 如果
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Data;
using System.Data.SqlClient;
//该源码下载自www.51aspx.com(51aspx.com)

namespace DataAccessLib
{
	#region 数据库访问接口
	public interface IDataAccess
	{
		#region 属性
		/// <summary>
		/// 连接字符串
		/// </summary>
		string ConnectionString
		{
			get;
			set;
		}
		#endregion

		#region 方法
		/// <summary>
		/// 打开连接
		/// </summary>
		void Open();
//51_a_s_p_x.c_o_m

		/// <summary>
		/// 关闭连接
		/// </summary>
		void Close();

		/// <summary>
		/// 执行命令
		/// </summary>
		/// <param name="CommandString">命令字符串</param>
		/// <param name="Paras">命令所带参数的数组</param>
		void ExcuteCommand( string CommandString, IDataParameter[] Paras );

        /// <summary>
        /// 返回用户权限码
        /// </summary>
        /// <param name="CommandString">命令字符串</param>
        /// <param name="Paras">参数数组</param>
        /// <returns>返回类型 </returns>
        string UserRoot(string CommandString, IDataParameter[] Paras);

		/// <summary>
		/// 查询执行命令获取数据记录集
		/// </summary>
		/// <param name="SelectCommandString">查询命令字符串</param>
		/// <param name="TableName">查询表名</param>
		/// <param name="Paras">查询命令所带参数的数组</param>
		/// <returns>执行查询命令获取的数据记录集</returns>
		DataSet GetDataSetFromExcuteCommand( string SelectCommandString, string TableName, IDataParameter[] Paras );

		/// <summary>
		/// 执行存储过程
		/// </summary>
		/// <param name="ProcName">存储过程名</param>
		/// <param name="Paras">存储过程所带参数的数组</param>
		int ExcuteProc( string ProcName, IDataParameter[] Paras );

		/// <summary>
		/// 执行查询存储过程获取数据记录集
		/// </summary>
		/// <param name="SelectProcName">查询存储过程名</param>
		/// <param name="TableName">查询表名</param>
		/// <param name="Paras">查询存储过程所带参数的数组</param>
		/// <returns>执行查询存储过程获取的数据记录集</returns>
		DataSet GetDataSetFromExcuteProc( string SelectProcName, string TableName, IDataParameter[] Paras );

		/// <summary>
		/// 执行命令获取第一行第一列的值
		/// </summary>
		/// <param name="CommandString">命令字符串</param>
		/// <param name="Paras">命令所带参数的数组</param>
		/// <returns>第一行第一列的值</returns>
		object ExecuteCommandScalar( string CommandString, IDataParameter[] Paras );

		/// <summary>
		/// 执行存储过程获取第一行第一列的值
		/// </summary>
		/// <param name="ProcName">存储过程名</param>
		/// <param name="Paras">存储过程所带参数的数组</param>
		/// <returns>第一行第一列的值</returns>
		object ExecuteProcScalar( string ProcName, IDataParameter[] Paras );

		/// <summary>
		/// 执行命令获取数据读取器
		/// </summary>
		/// <param name="SelectCommandString">查询命令字符串</param>
		/// <param name="Paras">查询命令所带参数的数组</param>
		/// <returns>数据读取器</returns>
		IDataReader GetDataReaderFromExcuteCommand( string SelectCommandString, IDataParameter[] Paras );

		/// <summary>
		/// 执行存储过程获取数据读取器
		/// </summary>
		/// <param name="SelectCommandString">查询存储过程名</param>
		/// <param name="Paras">查询存储过程所带参数的数组</param>
		/// <returns>数据读取器</returns>
		IDataReader GetDataReaderFromExcuteProc( string SelectProcName, IDataParameter[] Paras );
		#endregion
	}
	#endregion

	#region SQL数据库访问类
	public class SqlAccess:IDataAccess
	{
		#region SQL数据库访问构造方法
		/// <summary>
		/// 无参SQL数据库访问构造方法
		/// </summary>
		public SqlAccess()
		{
			strConn = "";
			conn = new SqlConnection();
		}

		/// <summary>
		/// 有参SQL数据库访问构造方法
		/// </summary>
		/// <param name="ConnectionString">数据库连接字符串</param>
		public SqlAccess( string ConnectionString )
		{
			strConn = ConnectionString;
			conn = new SqlConnection( strConn );
		}
		#endregion

		#region SQL数据库方法类字段
		private string strConn;		// 数据库连接字符串
		private SqlConnection conn;	// 数据库连接对象
		#endregion

		#region 命令文本类型枚举
		private enum CommandTextType	// 命令文本类型
		{
			Command,	// 命令
			Procedure	// 存储过程
		}
		#endregion

		#region 获取命令对象
		/// <summary>
		/// 获取命令对象
		/// </summary>
		/// <param name="CommandText">命令文本</param>
		/// <param name="Type">命令文本类型</param>
		/// <param name="Paras">命令文本所带参数</param>
		/// <returns>命令对象</returns>
		private SqlCommand GetCommand( string CommandText, CommandTextType Type, IDataParameter[] Paras )
		{
			SqlCommand cmd = new SqlCommand( CommandText, conn );	// 生成命令对象

			switch ( Type )				// 指定命令类型
			{
				case CommandTextType.Command:
					cmd.CommandType = CommandType.Text;
					break;
				case CommandTextType.Procedure:
					cmd.CommandType = CommandType.StoredProcedure;
					break;
			}

			if ( Paras != null )		// 为命令添加参数
			{
				foreach ( IDataParameter Para in Paras )
				{
					cmd.Parameters.Add( Para );
				}
			}

			return cmd;
		}
		#endregion

		#region 执行命令获取第一行第一列的数据
		/// <summary>
		/// 执行命令获取第一行第一列的数据
		/// </summary>
		/// <param name="cmd"></param>
		/// <returns></returns>
		private object GetScalar( SqlCommand cmd )
		{
			object obj = null;

			try
			{
				Open();						// 打开连接
				obj = cmd.ExecuteScalar();	// 执行命令获取第一行第一列数据
				Close();					// 关闭连接
			}
			catch ( Exception exp )
			{
				throw ( new Exception( "执行命令获取第一行第一列的数据错误:" + exp.Message ) );
			}

			return obj;
		}
		#endregion

		#region 获取数据读取器
		/// <summary>
		/// 获取数据读取器
		/// </summary>
		/// <param name="cmd">命令对象</param>
		/// <returns>数据读取器</returns>
		private SqlDataReader GetDataReader( SqlCommand cmd )
		{
			SqlDataReader Reader = null;

			try
			{
				Open();							// 打开连接
				Reader = cmd.ExecuteReader();	// 获取数据读取器
			}
			catch ( Exception exp )
			{
				throw ( new Exception( "执行命令获取数据读取器错误:" + exp.Message ) );
			}

			return Reader;
		}
		#endregion

		#region IDataAccess 成员

		#region 数据库连接字符串属性
		public string ConnectionString
		{
			get
			{
				// TODO:  添加 SqlAccess.ConnectionString getter 实现
				return strConn;
			}
			set
			{
				// TODO:  添加 SqlAccess.ConnectionString setter 实现
				strConn = value;
				conn.ConnectionString = strConn;
			}
		}
		#endregion

		#region 打开连接
		/// <summary>
		/// 打开连接
		/// </summary>
		public void Open()
		{
			// TODO:  添加 SqlAccess.Open 实现
			try
			{
				if ( conn.State != ConnectionState.Open )	// 判断数据库连接状态是否打开
				{
					conn.Open();							// 打开数据库连接
				}
			}
			catch ( Exception exp )
			{
				throw ( new Exception( "打开数据库连接错误:" + exp.Message ) );
			}
		}
		#endregion

		#region 关闭连接
		/// <summary>
		/// 关闭连接
		/// </summary>
		public void Close()
		{
			// TODO:  添加 SqlAccess.Close 实现
			try
			{
				if ( conn.State != ConnectionState.Closed )	// 判断数据库连接是否关闭
				{
					conn.Close();							// 关闭数据库连接
				}
			}
			catch ( Exception exp )

⌨️ 快捷键说明

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