zoukankan      html  css  js  c++  java
  • c#经典三层框架中的SqlHelper帮助类

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace DAL
    {
        class SqlHelper
        { 
            //获取字符串
            static string constr = ConfigurationManager.ConnectionStrings["JDNew"].ConnectionString;
            //创建连接
            static SqlConnection conn = new SqlConnection(constr);
            /// <summary>
            /// //打开连接,关闭连接。
            /// </summary>
            public static void ConnOpen()
            {
                if (conn.State == System.Data.ConnectionState.Closed)
                {
                    conn.Open();
                }
            }
            public static void ConnClose()
            {
                if (conn.State == System.Data.ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            /// <summary>
            /// 查询
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static SqlDataReader ExecuteReader(string sql, params object[] param)
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                for (int i = 0; i < param.Length; i++)
                {
                    cmd.Parameters.AddWithValue("@" + i, param[i]);
                }
                SqlDataReader sdr = cmd.ExecuteReader();
                conn.Close();
                return sdr;
            }
            /// <summary>
            /// 修改
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static bool ExecuteNonQuery(string sql, params object[] param)
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                for (int i = 0; i < param.Length; i++)
                {
                    cmd.Parameters.AddWithValue("@" + i, param[i]);
                }
                int j = cmd.ExecuteNonQuery();
                if (j > 0)
                {
                    conn.Close();
                    return true;
                }
                else
                {
                    conn.Close();
                    return false;
                }
            }
            /// <summary>
            /// 【存储过程】
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="commandType"></param>
            /// <param name="parameters"></param>
            /// <returns></returns>
            public static bool ExecuteNonQuery_Pro(string sql, CommandType commandType, SqlParameter[] parameters)
            {
                SqlCommand cmd = new SqlCommand(sql, conn) { CommandType = commandType };
                if (parameters != null)
                {
                    foreach (SqlParameter parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                }
                conn.Open();
                int count = cmd.ExecuteNonQuery();
                //conn.Close();
                if (count > 0)
                {
                    conn.Close();
                    return true;
                }
                else
                {
                    conn.Close();
                    return false;
                }
            }
            /// <summary>
            /// 数据集
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static DataTable DataTable(string sql, params object[] param)
            {
                conn.Open();
                SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
                for (int i = 0; i < param.Length; i++)
                {
                    sda.SelectCommand.Parameters.AddWithValue("@" + i, param[i]);
                }
                DataTable dt = new DataTable();
                sda.Fill(dt);
                conn.Close();
                return dt;
            }
            /// <summary>
            /// 第一行第一列
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static object ExecuteScalar(string sql, params object[] param)
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                for (int i = 0; i < param.Length; i++)
                {
                    cmd.Parameters.AddWithValue("@" + i, param[i]);
                }
                object obj = cmd.ExecuteScalar();
                conn.Close();
                return obj;
            }
    
            /// <summary>
            /// 事务处理
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="count"></param>
            /// <param name="parm"></param>
            /// <returns></returns>
            public static bool Transaction(string sql, int count, params object[] parm)
            {
                ConnOpen();
                SqlCommand cmd = new SqlCommand(sql, conn);
                if (parm != null)
                {
                    for (int i = 0; i < parm.Length; i++)
                    {
                        cmd.Parameters.AddWithValue("@" + i, parm[i]);
                    }
                }
    
                //开启事务
                cmd.Transaction = conn.BeginTransaction();//利用连接对象 获取开启的事务赋值给命令对象 开启事务
                int result = 0;//定义一个变量来获取 执行成功的个数
                try
                {
                    result = cmd.ExecuteNonQuery();//正常执行
                }
                catch
                {
                    //如果出现异常代表执行没有成功
                    cmd.Transaction.Rollback();//如果没成功,回到原点
                    ConnClose();
                    return false;
                }
                if (result == count)
                {
                    //说明执行成功了 才可以想数据库中提交数据
                    cmd.Transaction.Commit();
                    ConnClose();
                    return true;
                }
                else
                {
                    //没有成功 回到原点
                    cmd.Transaction.Rollback();
                    ConnClose();
                    return false;
                }
            }
            /// <summary>
            /// 分页,限制起始索引
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="index"></param>
            /// <param name="MaxCount"></param>
            /// <param name="tablename"></param>
            /// <param name="pm"></param>
            /// <returns></returns>
            public static DataSet DataSet(string sql, int index, int MaxCount, string tablename, params object[] pm)
            {
                SqlConnection conn = new SqlConnection(constr);
                conn.Open();
                SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
                for (int i = 0; i < pm.Length; i++)
                {
                    sda.SelectCommand.Parameters.AddWithValue("@" + i, pm[i]);
                }
                DataSet ds = new DataSet();
                sda.Fill(ds, index, MaxCount, tablename);
                conn.Close();
                return ds;
            }
    
        }
    }
  • 相关阅读:
    Atitit 华为基本法 attilax读后感
    Atitit 华为管理者内训书系 以奋斗者为本 华为公司人力资源管理纲要 attilax读后感
    Atitit 项目版本管理gitflow 与 Forking的对比与使用
    Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理
    Atitit 乌合之众读后感attilax总结 与读后感结构规范总结
    深入理解 JavaScript 异步系列(4)—— Generator
    深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise
    深入理解 JavaScript 异步系列(2)—— jquery的解决方案
    深入理解 JavaScript 异步系列(1)——基础
    使用 github + jekyll 搭建个人博客
  • 原文地址:https://www.cnblogs.com/SeNaiTes/p/9382077.html
Copyright © 2011-2022 走看看