• MySQL 执行原生sql


    public class MySqlHelper
    {
        private YourContext _context;
    
        public MySqlHelper(YourContext context)
        {
            _context = context;
        }
    
        /// <summary>
        /// 查询列表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql"></param>
        /// <returns></returns>
        public List<T> QueryForDatable<T>(string sql)
        {
            string conn= _context.Database.Connection.ConnectionString;
            using(var connection= new MySqlConnection(conn))
            {
                MySqlCommand cmd = new MySqlCommand(sql, connection);
                //需要open才能执行Command
                connection.Open();
                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    List<T> data = DataReaderMapToList<T>(reader);
                    connection.Close();
                    return data;
                }
            }
        }
    
        /// <summary>
        /// 查询数量
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public int QueryForCount(string sql)
        {
            string conn = _context.Database.Connection.ConnectionString;
            using (var connection = new MySqlConnection(conn))
            {
                MySqlCommand cmd = new MySqlCommand(sql, connection);
                connection.Open();
                //只取第一行第一个结果
                Object result = cmd.ExecuteScalar();
                if (result != null)
                {
                    int count = int.Parse(result.ToString());
                    connection.Close();
                    return count;
                }
                connection.Close();
                return 0;
            }
        }
    
        public static List<T> DataReaderMapToList<T>(IDataReader dr)
        {
            List<T> list = new List<T>();
            T obj = default(T);
            List<string> columnNames = new List<string>();
            //查询DataReader里面的列名集合
            for (var f = 0; f < dr.FieldCount; f++)
            {
                columnNames.Add(dr.GetName(f));
            }
            while (dr.Read())
            {
                obj = Activator.CreateInstance<T>();
                foreach (PropertyInfo prop in obj.GetType().GetProperties())
                {
                    //判断列名是否存在
                    var columnName = columnNames.Find(x => x == prop.Name);
                    if (!string.IsNullOrEmpty(columnName))
                    {
                        prop.SetValue(obj, dr[prop.Name]);
                    }
                }
                list.Add(obj);
            }
            return list;
        }
    }
    
  • 相关阅读:
    刘翔那点事
    网站建站模板
    搞笑!from 饮水思源
    我de虚拟经济学系列第一章 经济危机拼命建桥
    IT民工系列——c#操作Microsoft IE,实现自动登录吧!
    商业智能的发展及其应用
    我de虚拟经济学系列第三章 常见的致富之路
    IT民工系列——c#操作EditGrid,自己做一个在线Excel数据库吧!
    Asp.net下的Singleton模式
    asp.net 控件功能小结
  • 原文地址:https://www.cnblogs.com/Lulus/p/9550341.html
Copyright © 2020-2023  润新知