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();
}
}
}
}
}
}