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;
        }
    }
    
  • 相关阅读:
    Oracle使用手册<收藏>
    Oracle 连接串方式
    通过多线程为基于 .NET 的应用程序实现响应迅速的用户
    PL/SQL三种集合类型的比较<收藏>
    关于Application.DoEvents() 避免假死<收藏>
    Inserting/Retrieving CLOB/NCLOB Data
    从procedure返回結果集<收藏>
    oracle ReadBlobs
    使用Update...returning...into为什么会出现ORA01036,ORA24369错误 <收藏>
    DevExpress document 地址
  • 原文地址:https://www.cnblogs.com/Lulus/p/9550341.html
Copyright © 2011-2022 走看看