📄 dataaccess.cs
字号:
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 + -