• SQLHelper帮助类


    这几天搞了个简单的三层,数据库操作的帮助类实现

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Configuration;
    using System.Data;//DataSet/DataTable/DataRow/DataCol
    using System.Data.SqlClient;//SqlConnection/SqlCommand/SqlDataAdapter/SqlDataReader
    using System.Reflection;//反射命名空间
    
    namespace DAL
    {
        /// <summary>
        /// 数据库操作帮助类
        /// </summary>
        public static class SQLHelper
        {
            //1.准备连接字符串
            public static readonly string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
    
            #region 2.执行查询多行语句 - 返回数据表 +static DataTable ExcuteDataTable(string strSelectCmd, params SqlParameter[] paras)
            /// <summary>
            /// 2.执行查询多行语句 - 返回数据表
            /// </summary>
            /// <param name="strSelectCmd"></param>
            /// <param name="paras"></param>
            /// <returns></returns>
            public static DataTable ExcuteDataTable(string strSelectCmd, params SqlParameter[] paras)
            {
                //1.创建连接通道
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    //2.创建适配器
                    SqlDataAdapter da = new SqlDataAdapter(strSelectCmd, conn);
                    //2.1设置查询命令的参数
                    da.SelectCommand.Parameters.AddRange(paras);
                    //3.数据表
                    DataTable dt = new DataTable();
                    //4.将数据查询并填充到数据表中
                    da.Fill(dt);
                    return dt;
                }
            }
            #endregion
    
            #region  2.0升级泛型版 ------ 执行查询多行语句 - 返回数据表
            /// <summary>
            /// 2.0升级泛型版 ------ 执行查询多行语句 - 返回数据表
            /// </summary>
            /// <typeparam name="T2">泛型类型</typeparam>
            /// <param name="strSelectCmd">查询sql语句</param>
            /// <param name="paras">查询参数</param>
            /// <returns>泛型集合</returns>
            public static List<T2> ExcuteList<T2>(string strSelectCmd, params SqlParameter[] paras)
            {
                //1.创建连接通道
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    //2.创建适配器
                    SqlDataAdapter da = new SqlDataAdapter(strSelectCmd, conn);
                    //2.1设置查询命令的参数
                    da.SelectCommand.Parameters.AddRange(paras);
                    //3.数据表
                    DataTable dt = new DataTable();
                    //4.将数据查询并填充到数据表中
                    da.Fill(dt);
                    //5.将DataTable转成泛型集合List<T2>
                    if (dt.Rows.Count > 0)
                    {
                        //6.创建泛型集合对象
                        List<T2> list = new List<T2>();
                        //7.遍历数据行,将行数据存入 实体对象中,并添加到 泛型集合中list
                        foreach (DataRow row in dt.Rows)
                        {//7.1先获得泛型的类型(里面包含该类的所有信息 属性 方法 字段...........)
                            Type t = typeof(T2);
                            //7.2根据类型创建该类型的对象
                            T2 model = (T2)Activator.CreateInstance(t);// new MODEL.Classes()
                            //7.3根据类型 获得 该类型的 所有属性定义
                            PropertyInfo[] properties = t.GetProperties();
                            //7.4遍历属性数组
                            foreach (PropertyInfo p in properties)
                            {
                                //7.4.1获得属性名,作为列名
                                string colName = p.Name;
                                //7.4.2根据列名 获得当前循环行对应列的值
                                object colValue = row[colName];
                                //7.4.3将 列值 赋给 model对象的p属性
                                //model.ID=colValue;
                                p.SetValue(model, colValue, null);
                            }
                            //7.5将装好 了行数据的 实体对象 添加到 泛型集合中
                            list.Add(model);
                        }
                        return list;
                    }
                }
                return null;
            }
            #endregion
    
            #region 3.执行查询多行语句 - 返回数据读取器  +static SqlDataReader ExcuteDataReader(string strSelectCmd, params SqlParameter[] paras)
            /// <summary>
            /// 执行查询多行语句 - 返回数据读取器
            /// </summary>
            /// <param name="strSelectCmd"></param>
            /// <param name="paras"></param>
            /// <returns></returns>
            public static SqlDataReader ExcuteDataReader(string strSelectCmd, params SqlParameter[] paras)
            {
                SqlConnection conn = null;
                try
                {
                    //1.创建连接通道
                    conn = new SqlConnection(connStr);
                    //2.创建命令对象
                    SqlCommand cmd = new SqlCommand(strSelectCmd, conn);
                    //3.添加命令参数
                    cmd.Parameters.AddRange(paras);
                    //4.打开连接
                    conn.Open();
                    //5.创建读取器(当关闭此读取器时,会自动关闭连接通道)
                    SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);//当关闭此读取器时,会自动关闭连接通道
                    //6.返回读取器
                    return dr;
                }
                catch (Exception ex)
                {
                    conn.Dispose();
                    throw ex;
                }
            }
            #endregion
    
            #region 4.执行非查询语句(增删改) +static int ExcuteNonQuery(string strCmd, params SqlParameter[] paras)
            /// <summary>
            /// 执行非查询语句(增删改)
            /// </summary>
            /// <param name="strCmd"></param>
            /// <param name="paras"></param>
            /// <returns></returns>
            public static int ExcuteNonQuery(string strCmd, params SqlParameter[] paras)
            {
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    SqlCommand cmd = new SqlCommand(strCmd, conn);
                    cmd.Parameters.AddRange(paras);
                    conn.Open();
                    return cmd.ExecuteNonQuery();
                }
            }
            #endregion
    
            #region 5.查询结果集里的第一个单元格的值(单个值)+static object ExcuteScalar(string strSelectCmd, params SqlParameter[] paras)
            /// <summary>
            /// 查询结果集里的第一个单元格的值(单个值)
            /// </summary>
            /// <param name="strSelectCmd"></param>
            /// <param name="paras"></param>
            /// <returns></returns>
            public static object ExcuteScalar(string strSelectCmd, params SqlParameter[] paras)
            {
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    SqlCommand cmd = new SqlCommand(strSelectCmd, conn);
                    cmd.Parameters.AddRange(paras);
                    conn.Open();
                    return cmd.ExecuteScalar();
                }
            }
            #endregion
    
            #region 6.查询结果集里的第一个单元格的值(单个值)-- 泛型版本 + static T ExcuteScalar<T>(string strSelectCmd, params SqlParameter[] paras)
            /// <summary>
            /// 查询结果集里的第一个单元格的值(单个值)-- 泛型版本
            /// </summary>
            /// <typeparam name="T">类型参数</typeparam>
            /// <param name="strSelectCmd"></param>
            /// <param name="paras"></param>
            /// <returns></returns>
            public static T ExcuteScalar<T>(string strSelectCmd, params SqlParameter[] paras)
            {
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    SqlCommand cmd = new SqlCommand(strSelectCmd, conn);
                    cmd.Parameters.AddRange(paras);
                    conn.Open();
                    object o = cmd.ExecuteScalar();
                    return (T)Convert.ChangeType(o, typeof(T));
                }
            }
            #endregion
        }
    }
  • 相关阅读:
    常用: JS 获取浏览器窗口大小
    教你开发jQuery插件
    JS基础篇--JS的event.srcElement与event.target(触发事件对象)
    javascript中基本类型和引用类型的区别分析
    代码风格与文件模板
    定制外观
    安装与使用
    with as 如何工作
    面向对象进阶
    mro具体解释
  • 原文地址:https://www.cnblogs.com/sening/p/4515483.html
Copyright © 2020-2023  润新知