- using System;
- using System.Data;
- using System.Configuration;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- using System.ComponentModel;//大气象注释:提供 IComponent 接口的基实现并启用应用程序之间的对象共享。
- using System.Collections;
- using System.Diagnostics;//大气象注释:命名空间提供了用于与事件日志、性能计数器和系统进程进行交互的类。
- using System.Data.SqlClient;
- using System.Configuration;
- namespace Union.SQLHelper
- {
- /// <summary>
- /// 通用的数据库处理类,通过ado.net与数据库连接
- /// 大气象注释:
- /// 此类提供三种类型的操作
- /// 1.存储过程:RunProc()不带参数,带参数数组。
- /// 2.带out类型DataReader参数:不带参数,带参数数组。
- /// 3.创建SqlParameter:Input,Output,Return,普通四种类型的参数。
- /// </summary>
- public class Database : IDisposable//大气象注释:定义一种释放分配的非托管资源的方法。
- {
- // 连接数据源
- private SqlConnection con;
- /// <summary>
- /// 执行存储过程
- /// </summary>
- /// <param name="procName">存储过程的名称</param>
- /// <returns>返回存储过程返回值</returns>
- public int RunProc(string procName)
- {
- SqlCommand cmd = CreateCommand(procName, null);
- cmd.ExecuteNonQuery();
- this.Close();
- return (int)cmd.Parameters["ReturnValue"].Value;//大气象注释:这里用到了输出参数。
- }
- /// <summary>
- /// 执行存储过程
- /// </summary>
- /// <param name="procName">存储过程名称</param>
- /// <param name="prams">存储过程所需参数</param>
- /// <returns>返回存储过程返回值</returns>
- public int RunProc(string procName, SqlParameter[] prams)
- {
- SqlCommand cmd = CreateCommand(procName, prams);
- cmd.ExecuteNonQuery();
- this.Close();
- return (int)cmd.Parameters["ReturnValue"].Value;
- }
- /// <summary>
- /// 执行存储过程
- /// </summary>
- /// <param name="procName">存储过程的名称</param>
- /// <param name="dataReader">返回存储过程返回值</param>
- public void RunProc(string procName, out SqlDataReader dataReader)
- {
- SqlCommand cmd = CreateCommand(procName, null);
- dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
- //return (int)cmd.Parameters["ReturnValue"].Value;
- }
- /// <summary>
- /// 执行存储过程
- /// </summary>
- /// <param name="procName">存储过程的名称</param>
- /// <param name="prams">存储过程所需参数</param>
- /// <param name="dataReader">存储过程所需参数</param>
- public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
- {
- SqlCommand cmd = CreateCommand(procName, prams);
- dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
- //return (int)cmd.Parameters["ReturnValue"].Value;
- }
- /// <summary>
- /// 创建一个SqlCommand对象以此来执行存储过程
- /// </summary>
- /// <param name="procName">存储过程的名称</param>
- /// <param name="prams">存储过程所需参数</param>
- /// <returns>返回SqlCommand对象</returns>
- private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
- {
- // 确认打开连接
- Open();
- SqlCommand cmd = new SqlCommand(procName, con);
- cmd.CommandType = CommandType.StoredProcedure;
- // 依次把参数传入存储过程
- if (prams != null)
- {
- foreach (SqlParameter parameter in prams)
- cmd.Parameters.Add(parameter);
- }
- // 加入返回参数
- //大气象注释:这里加入了一个输出参数。
- cmd.Parameters.Add(
- new SqlParameter("ReturnValue", SqlDbType.Int, 4,
- ParameterDirection.ReturnValue, false, 0, 0,
- string.Empty, DataRowVersion.Default, null));
- return cmd;
- }
- /// <summary>
- /// 打开数据库连接.
- /// </summary>
- private void Open()
- {
- // 打开数据库连接
- if (con == null)
- {
- con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
- }
- if (con.State == System.Data.ConnectionState.Closed)
- con.Open();
- }
- /// <summary>
- /// 关闭数据库连接
- /// </summary>
- public void Close()
- {
- if (con != null)
- con.Close();
- }
- /// <summary>
- /// 释放资源
- /// </summary>
- public void Dispose()
- {
- // 确认连接是否已经关闭
- if (con != null)
- {
- con.Dispose();
- con = null;
- }
- }
- /// <summary>
- /// 传入输入参数
- /// </summary>
- /// <param name="ParamName">存储过程名称</param>
- /// <param name="DbType">参数类型</param></param>
- /// <param name="Size">参数大小</param>
- /// <param name="Value">参数值</param>
- /// <returns>新的 parameter 对象</returns>
- public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
- {
- return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
- }
- /// <summary>
- /// 传入返回值参数
- /// </summary>
- /// <param name="ParamName">存储过程名称</param>
- /// <param name="DbType">参数类型</param>
- /// <param name="Size">参数大小</param>
- /// <returns>新的 parameter 对象</returns>
- public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)
- {
- return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
- }
- /// <summary>
- /// 传入返回值参数
- /// </summary>
- /// <param name="ParamName">存储过程名称</param>
- /// <param name="DbType">参数类型</param>
- /// <param name="Size">参数大小</param>
- /// <returns>新的 parameter 对象</returns>
- public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)
- {
- return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
- }
- /// <summary>
- /// 生成存储过程参数
- /// </summary>
- /// <param name="ParamName">存储过程名称</param>
- /// <param name="DbType">参数类型</param>
- /// <param name="Size">参数大小</param>
- /// <param name="Direction">参数方向</param>
- /// <param name="Value">参数值</param>
- /// <returns>新的 parameter 对象</returns>
- public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
- {
- SqlParameter param;
- if (Size > 0)
- param = new SqlParameter(ParamName, DbType, Size);
- else
- param = new SqlParameter(ParamName, DbType);
- param.Direction = Direction;
- if (!(Direction == ParameterDirection.Output && Value == null))
- param.Value = Value;
- return param;
- }
- }
- }
SQLHelper收集(一)
最新推荐文章于 2024-06-10 11:42:11 发布