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;
}
}

最新文章

  1. 【.NET深呼吸】基于异步上下文的本地变量(AsyncLocal)
  2. 20161022 NOIP模拟赛 解题报告
  3. css常用代码
  4. JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)
  5. StatisticalOutlierRemoval源码
  6. 我没发现Mvc里的 web.config 有什么用。
  7. 用PHP语言做网站常见漏洞有哪些?
  8. 英语中的 姓氏/Surname
  9. Oracle 插入数据
  10. Keil编译后的各文件介绍
  11. Linux入门基础 #6:Linux用户基础
  12. Oracle查询速度慢的原因总结
  13. Apache + PHP in Windows XP (to add SQLite)
  14. synchronized的4种用法
  15. 怎样给Win7系统设置一个默认的浏览器
  16. C# winform页面可视化设计打开失败,提示未能加载程序集或他的一个依赖项,dll错误
  17. SpriteBuilder中pivot关节中的Collide bodies属性
  18. docker(三)容器的基本操作
  19. Template literals
  20. 编写简易的JS输入框模糊查询匹配(附有源码和demo)

热门文章

  1. iOS开发runtime学习:一:runtime简介与runtime的消息机制
  2. 从Ecipse中导出程序至apk 分类: H1_ANDROID 2013-10-26 22:17 516人阅读 评论(0) 收藏
  3. TF-IDF计算方法和基于图迭代的TextRank
  4. Android 输入框弹出样式
  5. HDU 5072 Coprime 同色三角形问题
  6. Android 离线缓存的高速实现
  7. matlab 机器学习相关函数、api
  8. 自己动手写shell命令之ls
  9. 小强的HTML5移动开发之路(26)—— JavaScript回顾1
  10. 【b604】2K进制数