• DapperHelper 帮助类


    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.Common;
    using System.Data.SqlClient;
    using System.Linq;
    using Dapper;
    
    namespace DAL
    {
        public class DapperHelper<T> 
        {
            /// <summary>
            /// 数据库连接字符串
            /// </summary>
            private static readonly string connectionString =
                ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
    
            /// <summary>
            /// 查询列表
            /// </summary>
            /// <param name="sql">查询的sql</param>
            /// <param name="param">替换参数</param>
            /// <returns></returns>
            public static List<T> Query(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.Query<T>(sql, param).ToList();
                }
            }
    
            /// <summary>
            /// 查询第一个数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static T QueryFirst(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.QueryFirst<T>(sql, param);
                }
            }
    
            /// <summary>
            /// 查询第一个数据没有返回默认值
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static T QueryFirstOrDefault(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.QueryFirstOrDefault<T>(sql, param);
                }
            }
    
            /// <summary>
            /// 查询单条数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static T QuerySingle(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.QuerySingle<T>(sql, param);
                }
            }
    
            /// <summary>
            /// 查询单条数据没有返回默认值
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static T QuerySingleOrDefault(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.QuerySingleOrDefault<T>(sql, param);
                }
            }
    
            /// <summary>
            /// 增删改
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static int Execute(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.Execute(sql, param);
                }
            }
    
            /// <summary>
            /// Reader获取数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static IDataReader ExecuteReader(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.ExecuteReader(sql, param);
                }
            }
    
            /// <summary>
            /// Scalar获取数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static object ExecuteScalar(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.ExecuteScalar(sql, param);
                }
            }
    
            /// <summary>
            /// Scalar获取数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static T ExecuteScalarForT(string sql, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    return con.ExecuteScalar<T>(sql, param);
                }
            }
    
            /// <summary>
            /// 带参数的存储过程
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static List<T> ExecutePro(string proc, object param)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    List<T> list = con.Query<T>(proc,
                        param,
                        null,
                        true,
                        null,
                        CommandType.StoredProcedure).ToList();
                    return list;
                }
            }
    
    
            /// <summary>
            /// 事务1 - 全SQL
            /// </summary>
            /// <param name="sqlarr">多条SQL</param>
            /// <param name="param">param</param>
            /// <returns></returns>
            public static int ExecuteTransaction(string[] sqlarr)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    using (var transaction = con.BeginTransaction())
                    {
                        try
                        {
                            int result = 0;
                            foreach (var sql in sqlarr)
                            {
                                result += con.Execute(sql, null, transaction);
                            }
    
                            transaction.Commit();
                            return result;
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            return 0;
                        }
                    }
                }
            }
    
            /// <summary>
            /// 事务2 - 声明参数
            ///demo:
            ///dic.Add("Insert into Users values (@UserName, @Email, @Address)",
            ///        new { UserName = "jack", Email = "380234234@qq.com", Address = "上海" });
            /// </summary>
            /// <param name="Key">多条SQL</param>
            /// <param name="Value">param</param>
            /// <returns></returns>
            public static int ExecuteTransaction(Dictionary<string, object> dic)
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    using (var transaction = con.BeginTransaction())
                    {
                        try
                        {
                            int result = 0;
                            foreach (var sql in dic)
                            {
                                result += con.Execute(sql.Key, sql.Value, transaction);
                            }
    
                            transaction.Commit();
                            return result;
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            return 0;
                        }
                    }
                }
            }
        }
    }
    
  • 相关阅读:
    OCI读取单条记录(C)
    共享内存shmget shmat shmdt
    Linux系统下的多线程编程入门
    如何让errno多线程/进程安
    linux的mount(挂载)命令详解
    取得系统时间并以BCD形式保存到字符串中
    电脑上的搜索功能用不了了,怎么办?
    如何建立Linux下的ARM交叉编译环境
    C#网络编程之Http请求
    深入了解Oracle前滚恢复rolling forward(一)
  • 原文地址:https://www.cnblogs.com/tangge/p/9972488.html
Copyright © 2020-2023  润新知