//辅助查询列表,或实例
public class MySqlQueryList
{
#region List<T> ToList<T>(string sql, params DbParameter[] parameters) where T : new()
/// <summary>
/// 返回一个list
/// </summary>
/// <typeparam name="T">实体模型</typeparam>
/// <param name="sql">sql语句</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public static List<T> ToList<T>(string sql, params DbParameter[] parameters) where T : new()
{
using (var read = MysqlHelp.ExecuteReader(sql, parameters))
{
List<T> list = null;
var type = typeof(T);
if (read.HasRows)
{ list = new List<T>();
}
while (read.Read())
{
T t = new T();
foreach (PropertyInfo item in type.GetProperties())
{
for (int i = ; i < read.FieldCount; i++)
{
//属性名与查询出来的列名比较
if (item.Name.ToLower() != read.GetName(i).ToLower()) continue;
var value = read[i];
if (value != DBNull.Value)
{
item.SetValue(t, value, null);
}
break;
}
}
//将创建的对象添加到集合中
list.Add(t);
}
return list;
}
}
#endregion #region T FirstOrDefault<T>(string sql, params DbParameter[] parameters)
/// <summary>
/// 返回一个实体模型
/// </summary>
/// <typeparam name="T">实体模型</typeparam>
/// <param name="sql">sql语句</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public static T FirstOrDefault<T>(string sql, params DbParameter[] parameters) where T : class,new()
{
using (var read = MysqlHelp.ExecuteReader(sql, parameters))
{ Type type = typeof(T); if (!read.Read()) return null;
T t = new T();
foreach (PropertyInfo item in type.GetProperties())
{
for (int i = ; i < read.FieldCount; i++)
{
//属性名与查询出来的列名比较
if (item.Name.ToLower() != read.GetName(i).ToLower()) continue;
object value = read[i];
if (value != DBNull.Value)
{
item.SetValue(t, value, null);
}
break;
} }
return t;
}
}
#endregion #region 分页查询信息 + List<T> ToListAsPager<T>(string sql,List<DbParameter> parameters, out int pageCount) where T : class,new()
/// <summary>
/// 分页查询信息GetTByPager
/// </summary>
/// <typeparam name="T">实体对象</typeparam>
/// <param name="parameters">参数列表</param>
/// <param name="pageCount">总页数</param>
/// <param name="sql">sql语句</param>
/// <returns>IList</returns>
public static List<T> ToListAsPager<T>(string sql, List<DbParameter> parameters, out int pageCount) where T : class,new()
{
//存储过程名称
List<T> contents = null;
parameters[parameters.Count - ].Direction = System.Data.ParameterDirection.Output;
using (var reader = MysqlHelp.ExecuteReader(sql, parameters.ToArray()))
{
if (reader.HasRows) contents = new List<T>();
var type = typeof(T);
while (reader.Read())
{
var t = new T();
//通用反射获取类的所有属性
foreach (var p in type.GetProperties())
{
//循环遍历reader读取的所有字段
for (var i = ; i < reader.FieldCount; i++)
{
//属性名与查询出来的列名比较
if (p.Name.ToLower() != reader.GetName(i).ToLower()) continue;
var value = reader[i];
//如果该value不数据库的NULL,则保存到实体对象中
if (DBNull.Value != value)
{
p.SetValue(t, value, null);
}
break;
}
}
if (contents != null) contents.Add(t);
}
//执行 SqlHelp.ExecuteNonQuery(cmdText, parameters); 返回总页数 pageCount
SQLhelp.ExcuteNonQuery(sql, parameters.ToArray());
//返回存储过程中的输出值
pageCount = Convert.ToInt32(parameters[parameters.Count - ].Value);
}
return contents;
}
#endregion
} //使用DataTable,查询数据
DataTable dt = MysqlHelp.ExecuteTable(sql, new SqlParameter("@sDelFlag", delflag));
List<TbStudentA> list = new List<TbStudentA>(); if (dt.Rows.Count > )
{
foreach (DataRow item in dt.Rows)
{
TbStudentA ts = new TbStudentA();
td.ClassId = Convert.ToInt32(item["列名"]);
list.Add(ts);
}
}
return list;

MySqlQueryList的更多相关文章

随机推荐

  1. i美股投资研报--Michael Kors(IPO版) _Michael Kors(KORS) _i美股

    i美股投资研报--Michael Kors(IPO版) _Michael Kors(KORS) _i美股 i美股投资研报--Michael Kors(IPO版)

  2. 面向对象程序设计-C++_课时18内联函数

    使用inline说明的函数称内联函数. 在C++中,除具有循环语句.switch语句的函数不能说明为内联函数外,其他函数都可以说明为内联函数. #include <iostream> us ...

  3. 使用border-image实现类似iOS7的1px底边

    使用border-image实现类似iOS7的1px底边 iOS7已经发布有一段时间,扁平化设计风格有很多值得称赞的地方,其中有很多设计细节都是值得研究的. 首先,来看下面iOS设置的截图中的bord ...

  4. Tomcat配置一个ip绑定多个域名

    在网上找了半天也没找到相关的资料,都说的太含糊. 本人对tomcat下配置 一ip对多域名的方法具体例如以下,按以下配置一定能成功,经过測试了. <Host name="localho ...

  5. C#将图片转化为黑白图片

    最近项目需要将上传的图片转化为黑白图片 在网上找了很多资料,测试通过,上代码 using System; using System.Collections.Generic; using System. ...

  6. 菜鸟初试水--JQuery基础

    此文仅作入门级文章,望大神们高抬贵手! JQuery: 它是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作. JQuery的用途: ①访问和操作DOM元素: 使用j ...

  7. Convert Binary Search Tree (BST) to Sorted Doubly-Linked List

    (http://leetcode.com/2010/11/convert-binary-search-tree-bst-to.html) Convert a BST to a sorted circu ...

  8. codeforces 633C. Spy Syndrome 2 hash

    题目链接 C. Spy Syndrome 2 time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  9. Java处理java.util.ConcurrentModificationException异常

    代码: public static void reduce(HashMap<String, Integer> hashMap, final Integer count) { Iterato ...

  10. 将 SQL Server 实例设置为自动启动(SQL Server 配置管理器)

    本主题说明如何使用 SQL Server 配置管理器在 SQL Server 2012 中将 SQL Server 实例设置为自动启动. 在安装过程中,SQL Server 通常配置为自动启动. 如果 ...