.net数据库操作类2

 

 using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using OSLeagueForumXP.Components;

namespace OSLeagueForumXP.Common
{
    /// <summary>
    /// 数据库操作通用类
    /// </summary>
    public class DataBase : IDisposable
    {
        /// <summary>
        /// 数据库连接源
        /// </summary>
        private SqlConnection SqlConn;
       
        /// <summary>
        /// 运行SQL Server储存过程
        /// </summary>
        /// <param name="ProcedureName">储存过程名称</param>
        /// <returns>储存过程返回的值</returns>
        public int RunProcedure(string ProcedureName)
        {
            SqlCommand Sqlcmd = CreateCommand(ProcedureName, null);
            Sqlcmd.ExecuteNonQuery();
            this.Close();
            return (int)Sqlcmd.Parameters["ReturnValue"].Value;
        }
       
        /// <summary>
        /// 运行SQL Server储存过程
        /// </summary>
        /// <param name="ProcedureName">储存过程名称</param>
        /// <param name="SqlPrams">储存过程参数</param>
        /// <returns>储存过程返回值</returns>
        public int RunProcedure(string ProcedureName, SqlParameter[] SqlPrams)
        {
            SqlCommand Sqlcmd = CreateCommand(ProcedureName, SqlPrams);
            Sqlcmd.ExecuteNonQuery();
            this.Close();
            return (int)Sqlcmd.Parameters["ReturnValue"].Value;
        }
       
        /// <summary>
        /// 运行SQL Server储存过程
        /// </summary>
        /// <param name="ProcedureName">储存过程名称</param>
        /// <param name="SqlReader">以SqlDataReader返回储存过程结果</param>
        public void RunProcedure(string ProcedureName, out SqlDataReader SqlReader)
        {
            SqlCommand Sqlcmd = CreateCommand(ProcedureName, null);
            SqlReader = Sqlcmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
       
        /// <summary>
        /// 运行SQL Server储存过程
        /// </summary>
        /// <param name="ProcedureName">储存过程名称</param>
        /// <param name="SqlPrams">储存过程参数</param>
        /// <param name="SqlReader">以SqlDataReader返回储存过程结果</param>
        public void RunProcedure(string ProcedureName, SqlParameter[] SqlPrams, out SqlDataReader SqlReader)
        {
            SqlCommand Sqlcmd = CreateCommand(ProcedureName, SqlPrams);
            SqlReader = Sqlcmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
       
        /// <summary>
        /// 运行Sql Server储存过程
        /// </summary>
        /// <param name="ProcedureName">储存过程名称</param>
        /// <param name="Table">数据表</param>
        /// <returns>DataSet对象</returns>
        public DataSet RunProcedure(string ProcedureName, string Table)
        {
            DataSet SqlDS = new DataSet();
            SqlDataAdapter SqlDA = CreateDataAdapter(ProcedureName,null);
            SqlDA.Fill(SqlDS,Table);
            return(SqlDS);
        }
       
        /// <summary>
        /// 运行SQL Server储存过程
        /// </summary>
        /// <param name="ProcedureName">储存过程名称</param>
        /// <param name="SqlPrams">Sql参数</param>
        /// <param name="Table">数据表</param>
        /// <returns>DataSet对象</returns>
        public DataSet RunProcedure(string ProcedureName, SqlParameter[] SqlPrams,string Table)
        {
            DataSet SqlDS = new DataSet();
            SqlDataAdapter SqlDA = CreateDataAdapter(ProcedureName,SqlPrams);
            SqlDA.Fill(SqlDS,Table);
            return(SqlDS);
        }
       
        /// <summary>
        /// 运行Sql Server储存过程
        /// </summary>
        /// <param name="ProcedureName">储存过程名称</param>
        /// <param name="Table">数据表</param>
        /// <param name="StartRecord">开始记录</param>
        /// <param name="MaxRecord">最大记录数</param>
        /// <returns>DataSet对象</returns>
        public DataSet RunProcedure(string ProcedureName, string Table,int StartRecord,int MaxRecord)
        {
            DataSet SqlDS = new DataSet();
            SqlDataAdapter SqlDA = CreateDataAdapter(ProcedureName,null);
            SqlDA.Fill(SqlDS,StartRecord,MaxRecord,Table);
            return(SqlDS);
        }
       
        /// <summary>
        /// 运行SQL Server储存过程
        /// </summary>
        /// <param name="ProcedureName">储存过程名称</param>
        /// <param name="SqlPrams">Sql参数</param>
        /// <param name="Table">数据表</param>
        /// <param name="StartRecord">开始记录</param>
        /// <param name="MaxRecord">最大记录数</param>
        /// <returns>DataSet对象</returns>
        public DataSet RunProcedure(string ProcedureName, SqlParameter[] SqlPrams,string Table,int StartRecord,int MaxRecord)
        {
            DataSet SqlDS = new DataSet();
            SqlDataAdapter SqlDA = CreateDataAdapter(ProcedureName,SqlPrams);
            SqlDA.Fill(SqlDS,StartRecord,MaxRecord,Table);
            return(SqlDS);
        }

        /// <summary>
        /// 创建SqlDataAdapter对象
        /// </summary>
        /// <param name="ProcedureName">储存过程</param>
        /// <param name="SqlPrams">Sql参数</param>
        /// <param name="Type">类型</param>
        /// <returns>SqlDataAdapter对象</returns>
        private SqlDataAdapter CreateDataAdapter(string ProcedureName, SqlParameter[] SqlPrams)
        {
            //打开数据库连接
            Open();
           
            SqlDataAdapter SqlDA = new SqlDataAdapter(ProcedureName, SqlConn);
           
            SqlDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            // 添加储存过程参数
            if (SqlPrams != null)
            {
                foreach (SqlParameter Sqlparameter in SqlPrams)
                {
                    SqlDA.SelectCommand.Parameters.Add(Sqlparameter);
                }
            }
           
            // 返回参数
            SqlDA.SelectCommand.Parameters.Add(
                new SqlParameter("ReturnValue", SqlDbType.Int, 4,
                ParameterDirection.ReturnValue, false, 0, 0,
                string.Empty, DataRowVersion.Default, null));

            return SqlDA;
        }

        /// <summary>
        /// 创建一个SqlCommand对象来调用储存过程
        /// </summary>
        /// <param name="ProcedureName">储存过程名称</param>
        /// <param name="SqlPrams">储存过程参数</param>
        /// <returns>SqlCommand对象</returns>
        private SqlCommand CreateCommand(string ProcedureName, SqlParameter[] SqlPrams)
        {
            //打开数据库连接
            Open();
           
            SqlCommand Sqlcmd = new SqlCommand(ProcedureName, SqlConn);
            Sqlcmd.CommandType = CommandType.StoredProcedure;

            // 添加储存过程参数
            if (SqlPrams != null)
            {
                foreach (SqlParameter Sqlparameter in SqlPrams)
                {
                    Sqlcmd.Parameters.Add(Sqlparameter);
                }
            }
           
            // 返回参数
            Sqlcmd.Parameters.Add(
                new SqlParameter("ReturnValue", SqlDbType.Int, 4,
                ParameterDirection.ReturnValue, false, 0, 0,
                string.Empty, DataRowVersion.Default, null));

            return Sqlcmd;
        }
       
        /// <summary>
        /// 打开数据库连接
        /// </summary>
        public void Open()
        {
            INI clsini = new INI();
            string strGetKey = clsini.Read("Common","SqlConn","",HttpContext.Current.Server.MapPath("../config.aspx"));
            // 如果没有打开数据库,则打开数据库连接
            SqlConn = new SqlConnection(strGetKey);
            SqlConn.Open();
        }
       
        /// <summary>
        /// 关闭数据库连接
        /// </summary>
        public void Close()
        {
            if (SqlConn != null)
                SqlConn.Close();
        }
       
        /// <summary>
        /// 释放资源
        /// </summary>
        public void Dispose()
        {
            // 确定以关闭数据库连接
            if (SqlConn != null)
            {
                SqlConn.Dispose();
                SqlConn = null;
            }               
        }
       
        /// <summary>
        /// 创建输入参数
        /// </summary>
        /// <param name="ParameterName">参数名称</param>
        /// <param name="DbType">参数类型</param>
        /// <param name="Size">参数大小</param>
        /// <param name="Value">参数值</param>
        /// <returns>新的参数</returns>
        public SqlParameter MakeInputParameter(string ParameterName, SqlDbType DbType, int Size, object Value)
        {
            return MakeParameter(ParameterName, DbType, Size, ParameterDirection.Input, Value);
        }
       
        /// <summary>
        /// 创建输出参数
        /// </summary>
        /// <param name="ParameterName">参数名称</param>
        /// <param name="DbType">参数类型</param>
        /// <param name="Size">参数大小</param>
        /// <returns>新的参数</returns>
        public SqlParameter MakeOutParameter(string ParameterName, SqlDbType DbType, int Size)
        {
            return MakeParameter(ParameterName, DbType, Size, ParameterDirection.Output, null);
        }
       
        /// <summary>
        /// 创建储存过程参数
        /// </summary>
        /// <param name="ParameterName">参数名称</param>
        /// <param name="DbType">参数类型</param>
        /// <param name="Size">参数大小</param>
        /// <param name="Direction">参数方法</param>
        /// <param name="Value">参数值</param>
        /// <returns>新的参数</returns>
        public SqlParameter MakeParameter(string ParameterName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
        {
            SqlParameter SqlParam;
           
            if(Size > 0)
            {
                SqlParam = new SqlParameter(ParameterName, DbType, Size);
            }
            else
            {
                SqlParam = new SqlParameter(ParameterName, DbType);
            }
           
            SqlParam.Direction = Direction;
            if (!(Direction == ParameterDirection.Output && Value == null))
            {
                SqlParam.Value = Value;
            }
           
            return SqlParam;
        }
    }
}

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值