using System; using System.Collections.Generic; using System.Configuration; using System.Data.SqlClient; using System.Linq; using Dapper; using CNet.Common; using Microsoft.Extensions.Configuration; using System.Data; using MySql.Data.MySqlClient; namespace CNet { public class DapperHelperMySql: IDapperHelper { private static readonly string connStr = AppConfigurtaionServices.Configuration.GetConnectionString("connMySql"); //ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; public static string ConnStr { get { return connStr; } } /// /// Excute返回受影响行数 /// /// /// /// public int Excute(string sql, object param=null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) { using (IDbConnection conn = new MySqlConnection(connStr)) { return conn.Execute(sql, param, transaction, commandTimeout, commandType); } } /// ///返回table数据 /// /// public DataTable ExecuteReaderToTable(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) { using (IDbConnection conn = new MySqlConnection(connStr)) { var reader = conn.ExecuteReader(sql, param, transaction, commandTimeout, commandType); DataTable tb = new DataTable(); tb.Load(reader); return tb; } } /// /// 查询返回list /// /// /// /// /// public List Query(string sql, object param=null, IDbTransaction transaction = null, bool buffered = true, int? commandTimeout = null, CommandType? commandType = null) { using (IDbConnection conn = new MySqlConnection(connStr)) { return conn.Query(sql, param, transaction, buffered, commandTimeout, commandType).ToList(); } } /// /// 查询返回第一个元素 /// /// /// /// /// public T QueryFirst(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) { using (IDbConnection conn = new MySqlConnection(connStr)) { return conn.QueryFirst(sql, param, transaction, commandTimeout, commandType); } } /// /// 查询返回多个列表结果 /// /// /// /// /// /// /// /// public SqlMapper.GridReader QueryMultiple(string sql, object param=null, IDbTransaction transaction = null, bool buffered = true, int? commandTimeout = null, CommandType? commandType = null) { using (IDbConnection conn = new MySqlConnection(connStr)) { return conn.QueryMultiple(sql, param,transaction,commandTimeout,commandType); } } /// /// 返回受影响第一列 /// /// /// /// public object ExecuteScalar(string sql, object param=null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) { using (IDbConnection conn = new MySqlConnection(connStr)) { return conn.ExecuteScalar(sql, param, transaction, commandTimeout, commandType); } } /// /// 符合条件的第一行数据 /// /// /// /// /// public T FirstOrDefault(string sql, object param=null) where T : class { return Query(sql,param).FirstOrDefault(); } /// /// 执行事务 /// /// /// /// public bool ExecTransaction(Dictionary dic, List proName = null) { using (IDbConnection conn = new MySqlConnection(connStr)) { conn.Open(); using (var transaction = conn.BeginTransaction()) { try { foreach (var item in dic) { if (proName != null) { conn.Execute(item.Key, item.Value, transaction: transaction, commandType: (proName.Contains(item.Key) ? CommandType.StoredProcedure : CommandType.Text)); } else { conn.Execute(item.Key, item.Value, transaction: transaction); } } transaction.Commit(); return true; } catch (Exception ex) { transaction.Rollback(); return false; } finally { conn.Close(); } } } } } }