.net core 3.1 MySqlHelper(自用)

MySQL的Helper:

cs 复制代码
using MySqlConnector;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Reflection;

namespace my_namespace 
{
    public sealed class MySqlHelper
    {
        //public static readonly string connectionString = AppSettings.Configuration["ConnectionStrings:MySql"];
        public static readonly string connectionString = CustomConfigManager.GetConfig("ConnectionString:MySql");

        #region ExecuteMySqlScript

        public static int ExecuteMySqlScript(string path)
        {
            using (MySqlConnection mySqlConnection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand mySqlCommand = new MySqlCommand())
                {
                    using (StreamReader streamReader = new StreamReader(path, System.Text.Encoding.UTF8))
                    {
                        mySqlCommand.Connection = mySqlConnection;
                        mySqlCommand.CommandText = streamReader.ReadToEnd();
                        mySqlConnection.Open(); return mySqlCommand.ExecuteNonQuery();
                    }
                }
            }
        }

        #endregion ExecuteMySqlScript

        #region ExecuteNonQuery

        public static int ExecuteNonQuery(string commandText, params MySqlParameter[] commandParameters)
        {
            using (MySqlConnection mySqlConnection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand mySqlCommand = new MySqlCommand(commandText, mySqlConnection))
                {
                    if (commandParameters != null)
                    {
                        mySqlCommand.Parameters.Clear();
                        mySqlCommand.Parameters.AddRange(commandParameters);
                    }

                    mySqlConnection.Open();

                    return mySqlCommand.ExecuteNonQuery();
                }
            }
        }
        public static int INSERT(string commandText, params MySqlParameter[] commandParameters)
        {
            return ExecuteNonQuery(commandText, commandParameters);
        }
        public static int UPDATE(string commandText, params MySqlParameter[] commandParameters)
        {
            return ExecuteNonQuery(commandText, commandParameters);
        }
        public static int DELETE(string commandText, params MySqlParameter[] commandParameters)
        {
            return ExecuteNonQuery(commandText, commandParameters);
        }
        #endregion ExecuteNonQuery

        #region GetEntities
        public static List<T> GetEntities<T>(string commandText, params MySqlParameter[] commandParameters)
        {
            using (MySqlConnection mySqlConnection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand mySqlCommand = new MySqlCommand(commandText, mySqlConnection))
                {
                    mySqlConnection.Open();
                    if (commandParameters != null)
                    {
                        mySqlCommand.Parameters.Clear();
                        mySqlCommand.Parameters.AddRange(commandParameters);
                    }

                    using (MySqlDataReader dataReader = mySqlCommand.ExecuteReader())
                    {
                        List<T> list = new List<T>();

                        while (dataReader.Read())
                        {
                            List<string> field = new List<string>(dataReader.FieldCount);

                            for (int i = 0; i < dataReader.FieldCount; i++)
                            {
                                field.Add(dataReader.GetName(i).ToLower());
                            }

                            T model = Activator.CreateInstance<T>();

                            foreach (PropertyInfo property in model.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))
                            {
                                if (field.Contains(property.Name.ToLower()))
                                {
                                    property.SetValue(model, Convert.ChangeType(dataReader[property.Name], property.PropertyType), null);
                                }
                            }

                            list.Add(model);
                        }

                        return list;
                    }
                }
            }
        }
        public static List<T> SELECT<T>(string commandText, params MySqlParameter[] commandParameters)
        {
            return GetEntities<T>(commandText, commandParameters);
        }
        #endregion GetEntities

        #region GetEntity

        public static T GetEntity<T>(string commandText, params MySqlParameter[] commandParameters)
        {
            using (MySqlConnection mySqlConnection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand mySqlCommand = new MySqlCommand(commandText, mySqlConnection))
                {
                    mySqlConnection.Open();

                    if (commandParameters != null)
                    {
                        mySqlCommand.Parameters.Clear();
                        mySqlCommand.Parameters.AddRange(commandParameters);
                    }

                    using (MySqlDataReader dataReader = mySqlCommand.ExecuteReader())
                    {
                        T model = Activator.CreateInstance<T>();

                        if (dataReader.Read())
                        {
                            List<string> field = new List<string>(dataReader.FieldCount);

                            for (int i = 0; i < dataReader.FieldCount; i++)
                            {
                                field.Add(dataReader.GetName(i).ToLower());
                            }

                            foreach (PropertyInfo property in model.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))
                            {
                                if (field.Contains(property.Name.ToLower()))
                                {
                                    property.SetValue(model, Convert.ChangeType(dataReader[property.Name], property.PropertyType), null);
                                }
                            }
                        }

                        return model;
                    }
                }
            }
        }
        public static T SELECT_TOP1<T>(string commandText, params MySqlParameter[] commandParameters)
        {
            return GetEntity<T>(commandText, commandParameters);
        }
        #endregion GetEntity

        #region ExecuteReader

        public static MySqlDataReader ExecuteReader(string commandText, params MySqlParameter[] commandParameters)
        {
            MySqlConnection mySqlConnection = new MySqlConnection(connectionString);
            MySqlCommand mySqlCommand = new MySqlCommand(commandText, mySqlConnection);

            if (commandParameters != null)
            {
                mySqlCommand.Parameters.Clear();
                mySqlCommand.Parameters.AddRange(commandParameters);
            }

            mySqlConnection.Open();

            return mySqlCommand.ExecuteReader(CommandBehavior.CloseConnection);
        }
        public static MySqlDataReader GetDataReader(string commandText, params MySqlParameter[] commandParameters)
        {
            return ExecuteReader(commandText, commandParameters);
        }
        #endregion ExecuteReader

        #region ExecuteScalar

        public static object ExecuteScalar(string commandText, params MySqlParameter[] commandParameters)
        {
            using (MySqlConnection mySqlConnection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand mySqlCommand = new MySqlCommand(commandText, mySqlConnection))
                {
                    if (commandParameters != null)
                    {
                        mySqlCommand.Parameters.Clear();
                        mySqlCommand.Parameters.AddRange(commandParameters);
                    }

                    mySqlConnection.Open();

                    return mySqlCommand.ExecuteScalar();
                }
            }
        }
        /// <summary>
        /// 获取第一行第一列数据
        /// </summary>
        /// <param name="commandText"></param>
        /// <param name="commandParameters"></param>
        /// <returns></returns>
        public static object GetScalar(string commandText, params MySqlParameter[] commandParameters)
        {
            return ExecuteScalar(commandText, commandParameters);
        }
        #endregion ExecuteScalar

        #region ExecuteDataSet

        public static DataSet ExecuteDataSet(string commandText, params MySqlParameter[] commandParameters)
        {
            using (MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter(commandText, connectionString))
            {
                DataSet dataSet = new DataSet();

                if (commandParameters != null)
                {
                    mySqlDataAdapter.SelectCommand.Parameters.Clear();
                    mySqlDataAdapter.SelectCommand.Parameters.AddRange(commandParameters);
                }

                mySqlDataAdapter.Fill(dataSet);

                return dataSet;
            }
        }
        /// <summary>
        /// 获取多行select的集合
        /// 即多个DataTable的集合
        /// </summary>
        /// <param name="commandText"></param>
        /// <param name="commandParameters"></param>
        /// <returns></returns>
        public static DataSet GetDataSet(string commandText, params MySqlParameter[] commandParameters)
        {
            return ExecuteDataSet(commandText, commandParameters);
        }
        #endregion ExecuteDataSet

        #region ExecuteDataTable

        public static DataTable ExecuteDataTable(string commandText, params MySqlParameter[] commandParameters)
        {
            using (MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter(commandText, connectionString))
            {
                DataTable dataTable = new DataTable();

                if (commandParameters != null)
                {
                    mySqlDataAdapter.SelectCommand.Parameters.Clear();
                    mySqlDataAdapter.SelectCommand.Parameters.AddRange(commandParameters);
                }

                mySqlDataAdapter.Fill(dataTable);

                return dataTable;
            }
        }
        public static DataTable GetDataTable(string commandText, params MySqlParameter[] commandParameters)
        {
            return ExecuteDataTable(commandText, commandParameters);
        }
        public static DataTable SELECT(string commandText, params MySqlParameter[] commandParameters)
        {
            return ExecuteDataTable(commandText, commandParameters);
        }
        #endregion ExecuteDataTable

        #region ExecuteTransaction
        /// <summary>
        /// 事物
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static int ExecuteTransaction(List<string> list)
        {
            using (MySqlConnection mySqlConnection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand mySqlCommand = new MySqlCommand())
                {
                    mySqlConnection.Open();

                    MySqlTransaction mySqlTransaction = mySqlConnection.BeginTransaction();

                    mySqlCommand.Connection = mySqlConnection;
                    mySqlCommand.Transaction = mySqlTransaction;

                    try
                    {
                        int result = 0;

                        foreach (var item in list)
                        {
                            mySqlCommand.CommandText = item;

                            result += mySqlCommand.ExecuteNonQuery();
                        }

                        mySqlTransaction.Commit();

                        return result;
                    }
                    catch (System.Exception)
                    {
                        mySqlTransaction.Rollback();

                        return 0;
                    }
                }
            }
        }
        /// <summary>
        /// 事物
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static int ExecuteTransaction(List<KeyValuePair<string, MySqlParameter[]>> list)
        {
            using (MySqlConnection mySqlConnection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand mySqlCommand = new MySqlCommand())
                {
                    mySqlConnection.Open();

                    MySqlTransaction mySqlTransaction = mySqlConnection.BeginTransaction();

                    mySqlCommand.Connection = mySqlConnection;
                    mySqlCommand.Transaction = mySqlTransaction;

                    try
                    {
                        int result = 0;

                        foreach (var item in list)
                        {
                            mySqlCommand.CommandText = item.Key;
                            mySqlCommand.Parameters.Clear();
                            mySqlCommand.Parameters.AddRange(item.Value);

                            result += mySqlCommand.ExecuteNonQuery();
                        }

                        mySqlTransaction.Commit();

                        return result;
                    }
                    catch (System.Exception)
                    {
                        mySqlTransaction.Rollback();

                        return 0;
                    }
                }
            }
        }

        #endregion ExecuteTransaction
    }
}

config文件,MySql链接字符串:

html 复制代码
{
  "ConnectionString": {
    "MySql": "server=192.168.1.1;Database=text_db;Uid=root;Pwd=123456;Allow User Variables=True;SslMode=None;"
  },
}

读取config文件:

cs 复制代码
using Microsoft.Extensions.Configuration;

namespace my_namespace 
{
    public class CustomConfigManager
    {
        //读取配置文件:appsettings
        //1.Microsoft.Extensions.Configuration;//NuGet
        //2.Microsoft.Extensions.Configuration.Json;//NuGet 
        public static string GetConfig(string key)
        {
            var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); //默认读取:当前运行目录
            IConfigurationRoot configuration = builder.Build();
            string configValue = configuration.GetSection(key).Value;
            return configValue;
        }
    }
}

附录:SqlSugarHelper

cs 复制代码
using SqlSugar;
using System;

namespace my_namespace 
{
    public class SqlSugarHelper
    {
        public string _connectionString = CustomConfigManager.GetConfig("ConnectionString:MySql");//获取SQL连接字符串
        public SqlSugarClient _db = null;

        /// <summary>
        /// 构造函数(初始化)
        /// 调用方法:
        /// SqlSugarHelper sugar = new SqlSugarHelper();
        /// var db = sugar.SqlClient();
        /// var user = db.Queryable<Userinfo>().Where(a => a.Name.Equals(uid) && a.PWD.Equals(pwd)).ToList().FirstOrDefault();
        /// </summary>
        public SqlSugarClient SqlClient()
        {
            if (string.IsNullOrEmpty(_connectionString))
                throw new ArgumentNullException("数据库连接字符串为空");

            try
            {
                _db = new SqlSugarClient(new ConnectionConfig()
                {
                    ConnectionString = _connectionString,//数据库连接字符串,见UI的appsettings.json内配置
                    DbType = DbType.MySql,//数据库类型
                    IsAutoCloseConnection = true,//自动断开连接
                    MoreSettings = new ConnMoreSettings()
                    {
                        IsWithNoLockQuery = true,//为true表式查询的时候默认会加上.With(SqlWith.NoLock),
                        IsAutoRemoveDataCache = true//为true自动清除缓存
                    }
                });
                //输入最终SQL语句...
                _db.Aop.OnLogExecuting = (sql, pars) =>
                {
                    var s1 = sql;//断点打在这里看内部生成的sql语句...
                };

                return _db;
            }
            catch (Exception ex)
            {              
                throw new ArgumentNullException(ex.Message);
            }

            #region 
            //SqlSugarClient _db = new SqlSugarClient(new ConnectionConfig()
            //{
            //    ConnectionString = _connectionString,
            //    DbType = SqlSugar.DbType.MySql,
            //    IsAutoCloseConnection = true
            //},
            // db =>
            // {
            //     db.Aop.OnLogExecuting = (sql, pars) =>
            //     {
            //     };
            // });

            //return _db;
            #endregion
        }

    }
}
相关推荐
yufei-coder3 小时前
掌握 C# 中的 LINQ(语言集成查询)
windows·vscode·c#·visual studio
立秋67897 小时前
Python的defaultdict详解
服务器·windows·python
Indigo_code7 小时前
【数据结构】【链表代码】合并有序链表
数据结构·windows·链表
暮雪倾风7 小时前
【WPF开发】超级详细的“文件选择”(附带示例工程)
windows·wpf
何中应9 小时前
如何使用CMD命令启动应用程序(二)
windows·桌面应用·batch命令
sukalot10 小时前
windows C++-使用任务和 XML HTTP 请求进行连接(一)
c++·windows
ぃ扶摇ぅ11 小时前
Windows系统编程(三)进程与线程二
c++·windows
weixin_4193497912 小时前
windows上安装python环境
windows
天上掉下来个程小白13 小时前
Stream流的中间方法
java·开发语言·windows
暮雪倾风13 小时前
【WPF开发】控件介绍-Grid(网格布局)
windows·wpf