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的更多相关文章
随机推荐
- padding-top、margin-top和top的区别
padding-top:10px;是指容器内的内容距离容器的顶部有10个像素,是包含在容器内的: margin-top:10px;是指容器本身的顶部距离其他容器有10个像素,不包含在容器内: top: ...
- c#搭建服务端 准备工作(1)
思路 搭建服务器主要为了接收客户端所传来的数据,在学习过程中,整体的搭建逻辑大体分为以下几个步骤: 1.启动线程监听服务端口 2.监听客户端链接并进行处理 3.接收客户端传入的消息 4.向客户端回传( ...
- collection系列用法-deque双向队列
deque双向队列 Deque可以从两端添加和删除元素.常用的结构,是它的简化版本. Deque支持序列的常用操作,现在举一个简单例子,你会发现其实跟平成的list没啥区别: import colle ...
- ZooKeeper源码阅读(二):客户端
源代码: http://svn.apache.org/repos/asf/zookeeper/trunk/ 导入eclipse: 在包含build.xml目录下执行ant eclipse将产生.cla ...
- iOS 处理方法中的可变參数
## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录 ...
- CentOS修改系统默认语言与编码
有时候在安装CentOS无意中把默认语言设置为中文,而部分SSH软件不支持中文编码,所以在远程管理的时候会出现些乱码的现象. 如何修改CentOS的默认语言呢? 请先使用root权限帐户登陆 一. ...
- 2014.8.18for循环
for循环 1.初始状态 2.循环条件 3.循环体 4.状态改变 语法 for( 初始状态 ; 循环条件 ; 状态改变 ) { 循环体; } eg: ; i <= ; i++) { Con ...
- html mysql special character
function html_encode(str) { var s = ""; if (str.length == 0) return ""; s = str. ...
- Svn服务启动的两种方式
一.svn服务器启动 cmd命令行启动:vsvnserve -d –r 文档仓库路径 -d 后台执行 -r 版本库的根目录 二.Windows服务自动启动 利用xp.2000 以上的 ...
- js处理json的方法
var json = "{id:"myid", url:"http://www.myurl.com"}"; var js= (new Fun ...