`
Stanleylei
  • 浏览: 22350 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

C# SQLHelper 较好

    博客分类:
  • .Net
阅读更多
using System;
using System.Collections.Generic;
using System.Text;

using System.Data;
using System.Data.SqlClient;

namespace EquipmentMS.BaseClass
{
    class DataBase:IDisposable
    {
        private SqlConnection con;  //创建连接对象
       

        #region   打开数据库连接
        /// <summary>
        /// 打开数据库连接.
        /// </summary>
        private void Open()
        {
            // 打开数据库连接
            if (con == null)
            {
                //con = new SqlConnection("Data Source=steve;DataBase=DB;User ID=sa;PWD=");
                string conStr = DataConStr.getDataConStr();
                con = new SqlConnection(conStr);
            }
            if (con.State == System.Data.ConnectionState.Closed)
                con.Open();

        }
        #endregion

        #region  关闭连接
        /// <summary>
        /// 关闭数据库连接
        /// </summary>
        public void Close()
        {
            if (con != null)
                con.Close();
        }
        #endregion

        #region 释放数据库连接资源
        /// <summary>
        /// 释放资源
        /// </summary>
        public void Dispose()
        {
            // 确认连接是否已经关闭
            if (con != null)
            {
                con.Dispose();
                con = null;
            }
        }
        #endregion

        #region   传入参数并且转换为SqlParameter类型
        /// <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>
        /// <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;
        }
        #endregion

        #region   执行参数命令文本(无数据库中数据返回)
        /// <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>
        /// 直接执行SQL语句
        /// </summary>
        /// <param name="procName">命令文本</param>
        /// <returns></returns>
        public int RunProc(string procName)
        {
            this.Open();
            SqlCommand cmd = new SqlCommand(procName, con);
            cmd.ExecuteNonQuery();
            this.Close();
            return 1;
        }

        #endregion

        #region   执行参数命令文本(有返回值) 执行查询命令文本,并且返回DataSet数据集
        /// <summary>
        /// 执行查询命令文本,并且返回DataSet数据集
        /// </summary>
        /// <param name="procName">命令文本</param>
        /// <param name="prams">参数对象</param>
        /// <param name="tbName">数据表名称</param>
        /// <returns></returns>
        public DataSet RunProcReturn(string procName, SqlParameter[] prams, string tbName)
        {
            SqlDataAdapter dap = CreateDataAdaper(procName, prams);
            DataSet ds = new DataSet();
            dap.Fill(ds, tbName);
            this.Close();
            //得到执行成功返回值
            return ds;
        }

        /// <summary>
        /// 执行命令文本,并且返回DataSet数据集
        /// </summary>
        /// <param name="procName">命令文本</param>
        /// <param name="tbName">数据表名称</param>
        /// <returns>DataSet</returns>
        public DataSet RunProcReturn(string procName, string tbName)
        {
            SqlDataAdapter dap = CreateDataAdaper(procName, null);
            DataSet ds = new DataSet();
            dap.Fill(ds, tbName);
            this.Close();
            //得到执行成功返回值
            return ds;
        }

        #endregion

        #region 将命令文本添加到SqlDataAdapter
        /// <summary>
        /// 创建一个SqlDataAdapter对象以此来执行命令文本
        /// </summary>
        /// <param name="procName">命令文本</param>
        /// <param name="prams">参数对象</param>
        /// <returns></returns>
        private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams)
        {
            this.Open();
            SqlDataAdapter dap = new SqlDataAdapter(procName, con);
            dap.SelectCommand.CommandType = CommandType.Text;  //执行类型:命令文本
            if (prams != null)
            {
                foreach (SqlParameter parameter in prams)
                    dap.SelectCommand.Parameters.Add(parameter);
            }
            //加入返回参数
            dap.SelectCommand.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4,
                ParameterDirection.ReturnValue, false, 0, 0,
                string.Empty, DataRowVersion.Default, null));

            return dap;
        }
        #endregion

        #region   将命令文本添加到SqlCommand
        /// <summary>
        /// 创建一个SqlCommand对象以此来执行命令文本
        /// </summary>
        /// <param name="procName">命令文本</param>
        /// <param name="prams"命令文本所需参数</param>
        /// <returns>返回SqlCommand对象</returns>
        private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
        {
            // 确认打开连接
            this.Open();
            SqlCommand cmd = new SqlCommand(procName, con);
            cmd.CommandType = CommandType.Text;     //执行类型:命令文本

            // 依次把参数传入命令文本
            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;
        }
        #endregion
    }
}

public  class DataConStr
    {
        public static string getDataConStr()
        {
            string conStr = Properties.Settings.Default.conStr;
            return conStr;
        }
    }

app.config
    <connectionStrings>
        <add name="EquipmentMS.Properties.Settings.conStr" connectionString="Data Source=steve;DataBase=DB;User ID=sa;PWD=" />
    </connectionStrings>

public int InsertUser(string userName,string pwd)
        {
            SqlParameter[] prams = {
                data.MakeInParam("@userName",SqlDbType.VarChar,50,userName),
                data.MakeInParam("@userPwd",SqlDbType.VarChar,50,pwd),
            };
            return data.RunProc("insert into tb_User (username,userpwd) values(@userName,@userPwd)", prams);
        }
分享到:
评论

相关推荐

    微软sqlhelper 源码C# 注释

    对Parameter有较好的处理 静态类可直接用! 简要如下 private utility methods & constructors ExecuteNonQuery ExecuteDataset ExecuteDataTable ExecuteReader ExecuteScalar ExecuteXmlReader FillDataset ...

    C# 常用类库

    2. **DES加密(Data Encryption Standard)**:DES是一种古老的对称加密算法,虽然安全性相对较低,但在一些旧系统中仍被使用。C#中,System.Security.Cryptography命名空间提供了DESCryptoServiceProvider类来实现...

    C#定制Excel界面并实现与数据库交互的方法

    1. **程序结构**:创建一个新的Excel Add-In项目,如“ExcelAddInDemo”,并在项目中添加必要的文件,包括RibbonAddIn(用于自定义UI)、SqlHelper(数据库访问助手)、以及多个用户控件(如UClog、UCPaneLeft、...

    ADO.NET异步SQL调用

    这种方式能够提高应用程序的响应性,尤其是在处理耗时较长的数据库操作时,不会阻塞主线程,允许用户界面继续更新。 描述中的“如何使用对SQL的异步调用来接收进度信息”指的是在执行异步SQL操作过程中,如何获取并...

    微软宠物商店代码分析

    PetShop4相较于前一代产品,在用户体验、代码质量和架构设计等方面均有显著提升。它利用了ASP.NET 2.0中的新特性,如Master Pages、Membership和Profile等,这些改进使得代码量比PetShop3减少了约25%。此外,PetShop...

Global site tag (gtag.js) - Google Analytics