链接字符串配置:
<connectionStrings>
<add name="db" connectionString="server=.;database=db;uid=sa;pwd=123456;integrated security=false;"/>
</connectionStrings>
DapperHelper.cs :
using Dapper;
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 PullChargeData.Helper
{
public class DapperHelper<T>
{
/// <summary>
/// 数据库连接字符串
/// </summary>
private static readonly string connectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
/// <summary>
/// 查询列表(返回DataTable)
/// </summary>
/// <returns></returns>
public static DataTable QueryToDataTable(string sql)
{
DataTable table = new DataTable("MyTable");
using (SqlConnection con = new SqlConnection(connectionString))
{
var reader = con.ExecuteReader(sql);
table.Load(reader);
return table;
}
}
/// <summary>
/// 查询列表
/// </summary>
/// <param name="sql">查询的sql</param>
/// <param name="param">替换参数</param>
/// <returns></returns>
public static List<T> Query(string sql, object param = null)
{
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 = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.Query<T>(sql, param).ToList().First();
}
}
/// <summary>
/// 查询第一个数据没有返回默认值
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QueryFirstOrDefault(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.Query<T>(sql, param).ToList().FirstOrDefault();
}
}
/// <summary>
/// 查询单条数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QuerySingle(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.Query<T>(sql, param).ToList().Single();
}
}
/// <summary>
/// 查询单条数据没有返回默认值
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QuerySingleOrDefault(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.Query<T>(sql, param).ToList().SingleOrDefault();
}
}
/// <summary>
/// 增删改
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns>Number of rows affected</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;
}
}
}
}
}
}
调用方法
//查 无参数
var list = DapperHelper<T_User>.Query("select * from T_User ").ToList();
//查 带参数
var list = DapperHelper<T_User>.Query("select * from T_User where uid=@uid", new { uid = 1, }).ToList();
//增
int ins = DapperHelper<T_User>.Execute("insert into T_User (uid,username) value(@uid,@username)", new { uid = 1, username = "张三" });
//改
int upd = DapperHelper<T_User>.Execute("update T_User set username=@username where uid=@uid", new { username = "李四", uid = 1});
//删
int del = DapperHelper<T_User>.Execute("delete from T_User where uid=@uid", new { uid = 1 });