MySqlQueryList
//辅助查询列表,或实例
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的更多相关文章
随机推荐
- Day1_PHP快速入门
本人知识背景:行业软件C/C++开发两年经验,了解PHP, 所以学习日志偏向记录PHP相对于C的特性 测试环境:EasyPHP13.1 Day 1 学习时间:3小时 1. HTML触发PHP HTML ...
- redsocks 设置全局代理
分享一下我的经验, http://lilydjwg.is-programmer.com/2014/2/7/linux-really-global-http-proxy.42701.html 1. 优点 ...
- nodejs开发微信1——微信路由设置a(access_token和tickets)
/* jshint -W079 */ /* jshint -W020 */ "use strict"; var _ = require("lodash"); v ...
- ubuntu13.04安装SenchaArchitect-2.2无法启动的问题
系统是ubuntukylin-13.04-desktop版本,不知道别的版本有没有这个问题,未测试.SenchaArchitect采用最新版本2.2.2,我安装的是32位的. 具体无法启动的问题如下: ...
- gridview合并相同的行
#region 方法:合并Gridview行 /// <summary> /// 合并GridView指定行单元格 /// </summary> /// ...
- SQL学习之用通配符进行数据过滤
一.Like操作符 之前介绍的所有的操作符都是针对已知值进行过滤.不管匹配一个值还是多个值,检验大于还是小于已知值,或者检查某个范围的值,其共同点是过滤中使用的值都是已知的. 但是这种方法并不是任何时 ...
- socketio 握手前中断报错
前两天折腾了下socketio,部署完发现通过nginx代理之后前端的socket无法和后端通信了,于是暴查一通,最后解决问题: location / { proxy_pass http://127. ...
- 如何查詢 SQL Server 資料庫中欄位值為 NULL 的資料(转)
最近使用mssql的时候对于未null的字段查询不到 http://blogs.msdn.com/b/jchiou/archive/2008/05/01/sql-server-null.aspx 先建 ...
- Java通过JDBC链接数据库,数据库中wen
连接数据库设置编码 jdbc:mysql://地址:3306/数据库名?characterEncoding=utf8
- Java学习之利用集合发牌小练习
/* * 思路: * A:创建一个HashMap集合 * B:创建一个ArrayList集合 * C:创建花色数组和点数数组 * D:从0开始往HashMap里面存储编号,并存储对应的牌同时往Arra ...