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;
        }
    }
    
  • 相关阅读:
    Python 06--面向对象编程
    Python 05--常用模块学习
    6大排序算法,c#实现
    Git管理unity3d项目
    cordova crosswalk android 7.0 问题
    ionic/cordvoa 修改platform文件夹里的文件,build会覆盖问题
    webStorm Linux Ubuntu 中文搜狗输入问题
    Ionic android 底部tabs
    ionic 添加新module
    yii2 Nav::widget() 和 Menu::widget()
  • 原文地址:https://www.cnblogs.com/Lulus/p/9550341.html
Copyright © 2011-2022 走看看