zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
  • 相关阅读:
    京东POP2020新店新规
    hdu 1203
    hdu 1513
    有关Canvas的一点小事—canvas数据和像素点
    有关Canvas的一点小事—图像绘制
    有关Canvas的一点小事--鼠标绘图
    Javascript和jquery事件--键盘事件KeyboardEvent
    [转]DOM0,DOM2,DOM3事件处理方式区别
    Javascript和jquery事件--鼠标事件的小结
    Javascript和jquery事件--鼠标移动事件mousemove
  • 原文地址:https://www.cnblogs.com/Lulus/p/9550341.html
Copyright © 2011-2022 走看看