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;
        }
    }
}

.net数据库操作类2相关推荐

  1. 小博老师解析Java核心技术 ——JDBC数据库操作类封装

    2019独角兽企业重金招聘Python工程师标准>>> [引言] 我们在学习Java编程时,连接数据库技术(JDBC)是一项必备技能,我们经常需要读取或操作持久性存储的结构化数据.那 ...

  2. php建立数据库操作类,PHP数据库操作类的定义及使用

    PHP数据库操作类的定义及使用 点击数:8894  发布时间2017-08-01 22:33:39 class myconn{ private $host; private $user; privat ...

  3. php封装数据库操作类,php简单数据库操作类的封装

    本文实例为大家分享了php封装一个简单的数据库操作类,供大家参考,具体内容如下 一.代码 class conndb{ private $local; private $username; privat ...

  4. 我积累的数据库操作类(ASP.NET)

    http://guanvee.cnblogs.com/archive/2006/06/16/427510.html http://guanvee.cnblogs.com/archive/2006/06 ...

  5. SqlHelper 数据库操作类2

    using System; using System.Data; using System.Data.SqlClient; namespace lsb.DBUtility {     /// < ...

  6. php操作mysql的封装类_PHP封装的mysqli数据库操作类示例

    本文实例讲述了PHP封装的mysqli数据库操作类.分享给大家供大家参考,具体如下: 由于PHPMySQL操作在PHP5.4以下被弃用而推荐使用mysqli(MySQL Improvement),这里 ...

  7. PHP操作mongodb数据库操作类

    最近的项目开发中使用的数据库是mongodb数据库,因为小编的公司也是刚刚使用mongodb数据库,所以之前没有封装好的mongodb数据库操作类拿来使用,所以小编在项目中自己封装了一个mongodb ...

  8. SqlHelper 数据库操作类

    sqlHelper.cs Code using System.Data; using System.Data.SqlClient; namespace lsb.DBUtility {     ///  ...

  9. php mysql 数据库操作类_php mysql数据库操作类

    分享一个本人一直在使用的一个mysql数据库操作类,比较初级,自己给别人做web网站的时候一直用的这个类,这个也是之前刚开始学习php的时候在网上找到的一个mysql数据库操作类,后来自己改了一些,比 ...

  10. 基于javascript的asp数据库操作类,含分页、字符串截取、用户登陆验证[原创]

    2005.01.15发表于blog.csdn.net/zxub 无聊又用了用asp,发现还是不爽,已经习惯了面向对象了,就想改进了,vbscript不用,感觉看起来很不爽,就用javascript写了 ...

最新文章

  1. 惊艳亮相!马斯克发布自研超算 Dojo 芯片、特斯拉人形机器人
  2. [YTU]_2008( 简单编码)
  3. python正则表达regex_Python 正则表达式(RegEx)
  4. oracle备份磁盘头,oracle asm 磁盘头数据以及备份与恢复基础篇(2)
  5. XStream – XStreamely使用Java中的XML数据的简便方法
  6. DIV+CSS 入门
  7. 一文读懂 Serverless,将配置化思想复用到平台系统中
  8. 2021二维数组中的元素查重(C++,stl--set)
  9. CCN(content centric networking)介绍
  10. linux中php集成软件,最新XAMPP Linux版5.6.3 官方版_免费开源php集成环境下载地址电脑版-锐品软件...
  11. linux中rlwrap安装
  12. 使用vue-cli来搭建vue项目
  13. 递归法 最大公倍数 斐波那契数列 数组插入排序改递归
  14. (一)MySQL 基础配置
  15. 9. 大型网站架构模式
  16. 新概念英语(1-29)Come in, Amy.
  17. 我手机计算机屏幕是黑色的,教你处理手机或者电脑黑屏的简单方法
  18. matlab中实心圆点,matlab曲线圆圈实心
  19. 南阳oj 144 小柯的苦恼
  20. 【读书分享】吴军:《信息传》

热门文章

  1. python如何做散点图-Python-如何为散点图制作动画?
  2. python3.6.5安装-Ubuntu16.04安装python3.6.5详细步骤
  3. python脚本实例手机端-python调用adb脚本来实现群控安卓手机初探
  4. python3项目-把项目从Python2.x移植到Python3.x的经验总结
  5. 函数式编程语言python-函数式编程
  6. 学习python需要什么基础-学习python需要什么基础吗?老男孩Python
  7. python使用字典格式化字符串-Python中将(字典,列表等)变量格式化输出
  8. python基础代码库-python基础--注册和登录功能 代码
  9. 零基础自学python看什么书-零基础想要学习Python编程 ,不知道看哪本书?
  10. pip安装库包遇到错误:TypeError: expected str, bytes or os.PathLike object, not int 的解决方法