/// <summary> /// 执行查询SQL,返回列表object /// </summary> /// <param name="sql"></param> /// <param name="pageSize"></param> /// <param name="curPage"></param> /// <param name="returnClass">不能为null</param> /// <returns></returns> public PageList <T> ExecutePageListObjectByType <T>(string sql, string orderKey, int pageSize, int curPage, Type returnClass) { PageList <T> objs = new PageList <T>(); T obj; IDataReader idr = null; // 计算获取的记录编号范围(当前页) objs.SetPage(pageSize, curPage); try { // 获取总记录数 if (pageSize != -1) { objs.TotalCount = ParamUtil.getint(_db.ExecuteScalarBySql(_isql.CountSql(sql))); } string pageSql = _isql.PageSql(sql, orderKey, objs.StartRecord, objs.EndRecord); // 执行查询 idr = _db.ExecuteReaderBySql(pageSql); // 获取指定范围的数据 while (idr.Read()) { obj = (T)ReflectUtil.CreateInstance(returnClass); // 第一列为COL_ROWNUM(记录号),不设置属性值 for (int i = 1; i < idr.FieldCount; i++) { ReflectUtil.SetPropertyValue(obj, idr.GetName(i), idr.GetValue(i)); } objs.Add(obj); } // 如果未分页,则设置总数为当前页记录数 if (pageSize == -1) { objs.TotalCount = objs.CurPageCount; } } finally { if (idr != null) { idr.Close(); } } return(objs); }