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的更多相关文章
随机推荐
- 快速定位MS Sql Server 数据库死锁进程
最近在做一个大型项目,由于数据设计采用离散型数据库设计,以方便需求变更及用户自定义流程要素,因为要素用户自定义,数据完整性靠代码约束变得不太现实,只能依靠表间关系来约束,结果因此导致数据的操作经常产生 ...
- md笔记——微信JS接口
微信js接口 隐藏微信中网页右上角按钮 document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { Weix ...
- bootstrap2.3.2常用标签的使用
<!DOCTYPE html> <html lang="zh_CN"> <head> <title>Bootstrap 101 Te ...
- English - 英语学习小笔记
1.It is...to do sth:做某事是.... 解析:It 是形式主语,后面一半接形容词做表语,to do sth是不定式短语作真正主语. 2.make do和make doing是两种表达 ...
- webService接口大全
中文<->英文双向翻译WEB服务 获得标准数据 Endpoint: http://fy.webxml.com.cn/webservices/EnglishChinese.asmx Disc ...
- ROS验证publisher和subscriber
在前面的两篇博客中我们用C++在ROS中创建了一个发布者和接收者,并使用catkin_make构建了新的节点,下面就需要验证一下,我们写的是否正确. 首先运行roscore roscore 在使用ca ...
- .Net页面缓存OutPutCachexian详解
一 它在Web.Config中的位置 <system.web> <!--页面缓存--> <caching> <outputCacheSettings> ...
- 关于eclipse(64位)下aptana插件安装报错问题解决
最近一直没有写过js,换了新电脑以后,eclipse下的aptana插件也没有装过,这几天要写js想重新把aptana装上,但是不知怎的,link方式.在线安装方式还有离线包下载下来利用eclipse ...
- mybaitis配置信息
在配置mybatis当中,jdbcType的名称要大写,时间类型DATE只能传入年月日,要想传入时分秒,应该使用TIMESTAMP http://www.blogjava.net/hello-yun/ ...
- Android 仿360桌面小人
首先自定义FloatsWindowView,用于显示动画小人. import android.annotation.SuppressLint; import android.content.Conte ...