2021-05-03

自己写的帮助类DbHelper(萌新一枚,第一次写博客,各位大佬请指正(:))

 

1、将数据库连接语句写在配置文件config中


  

//数据库连接自己设置吧
<add key="connString" value="Server =.; User Id =sa; Pwd=root;DataBase=student"/>
  </appSettings>
  <system.codedom>web)//多余代码,为了方便知道代码块放哪

2、加入了一些重载,可用性更高,忘记加入try()... catch()

注意:1、引用的时候改这个命名空间,与自己项目名称一样就好

           2、有一些使用了静态方法static,根据实际情况自己改,看用不用静态方法

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Collections;

namespace DataBind     //引用的时候改这个命名空间,与自己项目名称一样
{
    public class Dbhelper
    {
       //数据库连接
        static string url = ConfigurationSettings.AppSettings["connString"];
        /// <summary>
        ///数据插入更新,返回受影响的行数
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="type"></param>
        /// <param name="par"></param>
        /// <returns></returns>
        public int ExecuteNonQuery(string sql, CommandType type, params SqlParameter[] par)
        {
            using (SqlConnection conn = new SqlConnection(url))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.CommandType = type;
                    if (par != null)
                    {
                        cmd.Parameters.AddRange(par);
                    }
                    try
                    {
                        conn.Open();
                    }
                    catch (Exception ex)
                    {

                        throw ex;
                    }
                    int succ = cmd.ExecuteNonQuery();
                    return succ;
                }
            }
        }
        /// <summary>
        /// 数据更新删除
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="ht"></param>
        /// <returns></returns>
        static public int ExecuteNonQuery(string sql, Hashtable ht)
        {

            using (SqlConnection conn = new SqlConnection(url))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    if (ht != null)
                    {
                        SqlParameter[] par = new SqlParameter[ht.Count];
                        int index = 0;
                        foreach (DictionaryEntry item in ht)
                        {
                            par[index++] = new SqlParameter(item.Key.ToString(), item.Value);
                        }
                        cmd.Parameters.AddRange(par);
                    }
                    try
                    {
                        conn.Open();
                        cmd.CommandType = CommandType.Text;
                        return cmd.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }

                }
            }
        }
        /// <summary>
        /// 数据的更新删除插入,返回受影响行数(重载)
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="type"></param>
        /// <param name="par"></param>
        /// <returns></returns>
       static int ExecuteNonQuery(string sql, Dictionary<string, object> par)
        {
            using (SqlConnection conn = new SqlConnection(url))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.CommandType = CommandType.Text;
                    if (par != null)
                    {
                        SqlParameter[] sqlParametes = new SqlParameter[par.Count];
                        int index = 0;
                        foreach (var item in par)
                        {
                            sqlParametes[index++] = new SqlParameter(item.Key, item.Value);
                        }
                        cmd.Parameters.AddRange(sqlParametes);
                    }
                    try
                    {
                        conn.Open();
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }

                    int succ = cmd.ExecuteNonQuery();//执行sql语句
                    return succ;
                }
            }
        }
     

        /// <summary>
        /// 返回单个值
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="type"></param>
        /// <param name="par"></param>
        /// <returns></returns>
        public object ExecuteScalar(string sql, CommandType type, params SqlParameter[] par)
        {
            using (SqlConnection conn = new SqlConnection(url))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.CommandType = type;
                    if (par != null)
                    {
                        cmd.Parameters.AddRange(par);
                    }
                    conn.Open();
                    return cmd.ExecuteScalar();
                }
            }
        }
        /// <summary>
        /// 重载ExecuteScalar
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="type"></param>
        /// <param name="par"></param>
        /// <returns></returns>
        static public int ExecuteScalar(string sql, Hashtable ht)
        {

            using (SqlConnection conn = new SqlConnection(url))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    conn.Open();
                    cmd.CommandType = CommandType.Text;
                    if (ht != null)
                    {
                        SqlParameter[] par = new SqlParameter[ht.Count];
                        int index = 0;
                        foreach (DictionaryEntry item in ht)
                        {
                            par[index++] = new SqlParameter(item.Key.ToString(), item.Value);
                        }
                        cmd.Parameters.AddRange(par);
                    }
                    return (int)cmd.ExecuteScalar();
                }
            }
        }
        /// <summary>
        /// 重载ExecuteScalar2
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="type"></param>
        /// <param name="par"></param>
        /// <returns></returns>
        public int ExecuteScalar(string sql, Dictionary<string, object> dt)
        {

            using (SqlConnection conn = new SqlConnection(url))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    conn.Open();
                    cmd.CommandType = CommandType.Text;
                    if (dt != null)
                    {
                        SqlParameter[] sqls = new SqlParameter[dt.Count];
                        int index = 0;
                        foreach (var item in dt)
                        {
                            sqls[index++] = new SqlParameter(item.Key, item.Value);
                        }
                        cmd.Parameters.AddRange(sqls);
                    }
                    return (int)cmd.ExecuteScalar();
                }
            }
        }
        //返回数据集合,用于数据查询返回多条数据
        /// <summary>
        ///返回集合
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql"></param>
        /// <param name="paramList"></param>
        /// <returns></returns>
        public List<T> GetPurchaseOrPurchaseLine<T>(string sql, Dictionary<string, object> paramList)
        {
            Type type = typeof(T);

            List<T> list = new List<T>();     //object集合
            using (SqlConnection conn = new SqlConnection(url))
            {
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = CommandType.Text;
                conn.Open();//打开数据库

                if (paramList != null)
                {
                    SqlParameter[] sqlParameter = new SqlParameter[paramList.Count];
                    int index = 0;
                    foreach (var item in paramList)
                    {
                        sqlParameter[index] = new SqlParameter(item.Key, item.Value);
                        index++;
                    }
                    cmd.Parameters.AddRange(sqlParameter);   //添加参数
                }
                SqlDataReader sda = cmd.ExecuteReader();        //执行sql语句
                while (sda.Read())
                {
                    object Object = Activator.CreateInstance(type);//通过反射创建实例
                    foreach (var prop in type.GetProperties())
                    {
                        prop.SetValue(Object, sda[prop.Name]);
                    }
                    list.Add((T)Object);//转换成自己的类
                }
                sda.Close();        //关闭读取缓存数据
            }
            return list;
        }

        /// <summary>
        /// 返回默认或者查找到的ID的数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql"></param>
        /// <param name="paramList"></param>
        /// <returns></returns>
        internal T QueryFirstOrDefault<T>(string sql, Dictionary<string, object> paramList)
        {
            Type type = typeof(T);
            object Object = Activator.CreateInstance(type);//通过反射创建实例            
            try
            {
                using (SqlConnection conn = new SqlConnection(url))
                {
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    cmd.CommandType = CommandType.Text;
                    conn.Open();//打开数据库

                    if (paramList != null)
                    {
                        SqlParameter[] sqlParameter = new SqlParameter[paramList.Count];
                        int index = 0;
                        foreach (var item in paramList)
                        {
                            sqlParameter[index] = new SqlParameter(item.Key, item.Value);
                            index++;
                        }
                        cmd.Parameters.AddRange(sqlParameter);   //添加参数
                    }
                    SqlDataReader sda = cmd.ExecuteReader();        //执行sql语句
                    while (sda.Read())
                    {
                        foreach (var prop in type.GetProperties())
                        {
                            //给属性赋值
                            prop.SetValue(Object, sda[prop.Name]);
                        }
                    }
                    sda.Close();        //关闭读取缓存数据              
                }
                return (T)Object;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        /// <summary>
        /// 返回表
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="paramList"></param>
        /// <returns></returns>
        static public DataTable ExecuteDataTable(string sql, Dictionary<string, object> paramList)
        {
            try
            {
                DataTable ds = new DataTable();//创建DataSet实例
                using (SqlConnection conn = new SqlConnection(url))
                {
                    conn.Open();//打开数据库
                    SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
                    if (paramList != null)
                    {
                        SqlParameter[] sqlParameter = new SqlParameter[paramList.Count];
                        int index = 0;
                        foreach (var item in paramList)
                        {
                            sqlParameter[index] = new SqlParameter(item.Key, item.Value);
                            index++;
                        }
                        sda.SelectCommand.Parameters.AddRange(sqlParameter);
                    }

                    sda.Fill(ds);//使用DataAdapter的Fill方法(填充),调用SELECT命令
                    return ds;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值