//辅助查询列表,或实例
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. 记录一下八款开源 Android 游戏引擎

    记录一下八款开源 Android 游戏引擎 虽然android学了点点,然后现在又没学了(我为啥这么没有恒心呢大哭).以后有时间还是要继续学android的,一定要啊!虽然现在没学android游戏编 ...

  2. poj2163

    #include <stdio.h> #include <stdlib.h> int main() { ; ]; scanf("%d %d %d",& ...

  3. 对应第一篇文章api的编写

    router.get('/api/tags/search/:list/:key/:page', function(req, res) { if(_.isEmpty(req.params.key)) { ...

  4. C语言 大小端 字节对齐

    参考:http://www.cnblogs.com/graphics/archive/2011/04/22/2010662.html 1. 大端序:数据的高位字节存放在地址的低端,低位字节存放在地址的 ...

  5. Spring构造器注入、set注入和注解注入

    记得刚开始学spring的时候,老师就反复的提到依赖注入和切面,平常的java开发中,在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种方法耦合度太高并且不容易测试,sp ...

  6. ovs 实用案例

    建立gre,xvlan:http://networkstatic.net/configuring-vxlan-and-gre-tunnels-on-openvswitch/ vm之间通过gre通信:h ...

  7. MyDatePicker拆分日期显示到不同TextBox

    如图所示效果:年—月—日 时—分—秒 <tr>                <td align="center" style="background- ...

  8. phoenegap3.5 采坑

    上周5晚上在家看Node.js视频的时候,老大来一条短信让研究下 phoengap打包一个web网站. 遂 陷入了phonegap的深渊中. phoengap很早开始使用 cli模式安装开发环境 ,借 ...

  9. JavaScript之Ajax

    简介:AJax是在2005年被Adaptive Path的Jesse James Garrett发明的,用户概括异步加载页面内容的技术---说通俗点,Ajax就是实现局部页面通过JavaScript与 ...

  10. hive 学习笔记精简

    创建表: drop table t create table if not exists t (t string) partitioned by (log_date string) row forma ...