using Dapper; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Threading.Tasks; using VueWebCoreApi.Tools; namespace VueWebCoreApi.Quartz { public static class DapperHelper { // 配置文件读取,建议放到appsettings.json private static readonly string _connectionString = AppSetting.GetAppSetting("DBServer"); /// /// 获取数据库连接 /// public static IDbConnection GetConnection() { var conn = new SqlConnection(_connectionString); if (conn.State != ConnectionState.Open) conn.Open(); return conn; } /// /// 执行查询返回DataTable /// public static DataTable SelectTable(string sql, object param = null) { using (var conn = GetConnection()) { var reader = conn.ExecuteReader(sql, param); var dt = new DataTable(); dt.Load(reader); return dt; } } /// /// 执行增删改 /// public static int Execute(string sql, object param = null) { using (var conn = GetConnection()) { return conn.Execute(sql, param); } } /// /// 异步执行增删改 /// public static async Task ExecuteAsync(string sql, object param = null) { using (var conn = GetConnection()) { return await conn.ExecuteAsync(sql, param); } } /// /// 执行事务 /// public static bool DoTransaction(List<(string Sql, object Param)> list) { using (var conn = GetConnection()) { using (var tran = conn.BeginTransaction()) { try { foreach (var item in list) { conn.Execute(item.Sql, item.Param, tran); } tran.Commit(); return true; } catch { tran.Rollback(); return false; } } } } /// /// 查询列表 /// public static List Query(string sql, object param = null) { using (var conn = GetConnection()) { return conn.Query(sql, param).ToList(); } } /// /// 异步查询列表 /// public static async Task> QueryAsync(string sql, object param = null) { using (var conn = GetConnection()) { var result = await conn.QueryAsync(sql, param); return result.ToList(); } } /// /// 查询单个对象 /// public static T QueryFirstOrDefault(string sql, object param = null) { using (var conn = GetConnection()) { return conn.QueryFirstOrDefault(sql, param); } } /// /// 异步查询单个对象 /// public static async Task QueryFirstOrDefaultAsync(string sql, object param = null) { using (var conn = GetConnection()) { return await conn.QueryFirstOrDefaultAsync(sql, param); } } } }