SQLHelper收集(一)

来源:互联网 发布:ubuntu安装网页播放器 编辑:程序博客网 时间:2024/06/08 08:32
 
  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. using System.ComponentModel;//大气象注释:提供 IComponent 接口的基实现并启用应用程序之间的对象共享。 
  11. using System.Collections;
  12. using System.Diagnostics;//大气象注释:命名空间提供了用于与事件日志、性能计数器和系统进程进行交互的类。
  13. using System.Data.SqlClient;
  14. using System.Configuration;
  15. namespace Union.SQLHelper
  16. {
  17.     /// <summary>
  18.     /// 通用的数据库处理类,通过ado.net与数据库连接
  19.     /// 大气象注释:
  20.     /// 此类提供三种类型的操作
  21.     /// 1.存储过程:RunProc()不带参数,带参数数组。
  22.     /// 2.带out类型DataReader参数:不带参数,带参数数组。
  23.     /// 3.创建SqlParameter:Input,Output,Return,普通四种类型的参数。
  24.     /// </summary>
  25.     public class Database : IDisposable//大气象注释:定义一种释放分配的非托管资源的方法。
  26.     {
  27.         // 连接数据源
  28.         private SqlConnection con;
  29.         /// <summary>
  30.         /// 执行存储过程
  31.         /// </summary>
  32.         /// <param name="procName">存储过程的名称</param>
  33.         /// <returns>返回存储过程返回值</returns>
  34.         public int RunProc(string procName)
  35.         {
  36.             SqlCommand cmd = CreateCommand(procName, null);
  37.             cmd.ExecuteNonQuery();
  38.             this.Close();
  39.             return (int)cmd.Parameters["ReturnValue"].Value;//大气象注释:这里用到了输出参数。
  40.         }
  41.         /// <summary>
  42.         /// 执行存储过程
  43.         /// </summary>
  44.         /// <param name="procName">存储过程名称</param>
  45.         /// <param name="prams">存储过程所需参数</param>
  46.         /// <returns>返回存储过程返回值</returns>
  47.         public int RunProc(string procName, SqlParameter[] prams)
  48.         {
  49.             SqlCommand cmd = CreateCommand(procName, prams);
  50.             cmd.ExecuteNonQuery();
  51.             this.Close();
  52.             return (int)cmd.Parameters["ReturnValue"].Value;
  53.         }
  54.         /// <summary>
  55.         /// 执行存储过程
  56.         /// </summary>
  57.         /// <param name="procName">存储过程的名称</param>
  58.         /// <param name="dataReader">返回存储过程返回值</param>
  59.         public void RunProc(string procName, out SqlDataReader dataReader)
  60.         {
  61.             SqlCommand cmd = CreateCommand(procName, null);
  62.             dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
  63.             //return (int)cmd.Parameters["ReturnValue"].Value;
  64.         }
  65.         /// <summary>
  66.         /// 执行存储过程
  67.         /// </summary>
  68.         /// <param name="procName">存储过程的名称</param>
  69.         /// <param name="prams">存储过程所需参数</param>
  70.         /// <param name="dataReader">存储过程所需参数</param>
  71.         public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
  72.         {
  73.             SqlCommand cmd = CreateCommand(procName, prams);
  74.             dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
  75.             //return (int)cmd.Parameters["ReturnValue"].Value;
  76.         }
  77.         /// <summary>
  78.         /// 创建一个SqlCommand对象以此来执行存储过程
  79.         /// </summary>
  80.         /// <param name="procName">存储过程的名称</param>
  81.         /// <param name="prams">存储过程所需参数</param>
  82.         /// <returns>返回SqlCommand对象</returns>
  83.         private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
  84.         {
  85.             // 确认打开连接
  86.             Open();
  87.             SqlCommand cmd = new SqlCommand(procName, con);
  88.             cmd.CommandType = CommandType.StoredProcedure;
  89.             // 依次把参数传入存储过程
  90.             if (prams != null)
  91.             {
  92.                 foreach (SqlParameter parameter in prams)
  93.                     cmd.Parameters.Add(parameter);
  94.             }
  95.             // 加入返回参数
  96.             //大气象注释:这里加入了一个输出参数。
  97.             cmd.Parameters.Add(
  98.                 new SqlParameter("ReturnValue", SqlDbType.Int, 4,
  99.                 ParameterDirection.ReturnValue, false, 0, 0,
  100.                 string.Empty, DataRowVersion.Default, null));
  101.             return cmd;
  102.         }
  103.         /// <summary>
  104.         /// 打开数据库连接.
  105.         /// </summary>
  106.         private void Open()
  107.         {
  108.             // 打开数据库连接
  109.             if (con == null)
  110.             {
  111.                 con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
  112.             }
  113.             if (con.State == System.Data.ConnectionState.Closed)
  114.                 con.Open();
  115.         }
  116.         /// <summary>
  117.         /// 关闭数据库连接
  118.         /// </summary>
  119.         public void Close()
  120.         {
  121.             if (con != null)
  122.                 con.Close();
  123.         }
  124.         /// <summary>
  125.         /// 释放资源
  126.         /// </summary>
  127.         public void Dispose()
  128.         {
  129.             // 确认连接是否已经关闭
  130.             if (con != null)
  131.             {
  132.                 con.Dispose();
  133.                 con = null;
  134.             }
  135.         }
  136.         /// <summary>
  137.         /// 传入输入参数
  138.         /// </summary>
  139.         /// <param name="ParamName">存储过程名称</param>
  140.         /// <param name="DbType">参数类型</param></param>
  141.         /// <param name="Size">参数大小</param>
  142.         /// <param name="Value">参数值</param>
  143.         /// <returns>新的 parameter 对象</returns>
  144.         public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
  145.         {
  146.             return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
  147.         }
  148.         /// <summary>
  149.         /// 传入返回值参数
  150.         /// </summary>
  151.         /// <param name="ParamName">存储过程名称</param>
  152.         /// <param name="DbType">参数类型</param>
  153.         /// <param name="Size">参数大小</param>
  154.         /// <returns>新的 parameter 对象</returns>
  155.         public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)
  156.         {
  157.             return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
  158.         }
  159.         /// <summary>
  160.         /// 传入返回值参数
  161.         /// </summary>
  162.         /// <param name="ParamName">存储过程名称</param>
  163.         /// <param name="DbType">参数类型</param>
  164.         /// <param name="Size">参数大小</param>
  165.         /// <returns>新的 parameter 对象</returns>
  166.         public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)
  167.         {
  168.             return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
  169.         }
  170.         /// <summary>
  171.         /// 生成存储过程参数
  172.         /// </summary>
  173.         /// <param name="ParamName">存储过程名称</param>
  174.         /// <param name="DbType">参数类型</param>
  175.         /// <param name="Size">参数大小</param>
  176.         /// <param name="Direction">参数方向</param>
  177.         /// <param name="Value">参数值</param>
  178.         /// <returns>新的 parameter 对象</returns>
  179.         public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
  180.         {
  181.             SqlParameter param;
  182.             if (Size > 0)
  183.                 param = new SqlParameter(ParamName, DbType, Size);
  184.             else
  185.                 param = new SqlParameter(ParamName, DbType);
  186.             param.Direction = Direction;
  187.             if (!(Direction == ParameterDirection.Output && Value == null))
  188.                 param.Value = Value;
  189.             return param;
  190.         }
  191.     }
  192. }
原创粉丝点击