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;
        }
    }
    
  • 相关阅读:
    Unity中溶解shader的总结
    Unity Shader 知识点总结(二)
    Unity Shader 知识点总结(一)
    Unity优化之GC——合理优化Unity的GC
    nuxt中使用vant框架
    Redux第一节
    React动画库
    react一写工具
    几种下载第三方的方式有何不同
    React生命周期函数
  • 原文地址:https://www.cnblogs.com/Lulus/p/9550341.html
Copyright © 2011-2022 走看看