zoukankan      html  css  js  c++  java
  • 利用泛型和反射,将从数据库select出来的集合直接转换成对象

    现在的版本是直接利用反射的,下一步将改编成利用快速反射

    public
    static T ExcuteEntity<T>(SQLiteCommand cmd) { Type entityType = typeof(T); PropertyInfo[] fieldinfos = entityType.GetProperties(); T entity = (T)Activator.CreateInstance(entityType); DbDataReader reader = null; if (conn == null || conn.Length == 0) throw new ArgumentNullException("connectionString"); SQLiteConnection con = new SQLiteConnection(conn); SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText); try { reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); reader.Read(); } catch (Exception ex) { throw ex; } foreach (PropertyInfo field in fieldinfos) { int col=reader.GetOrdinal(field.Name); if (col != -1) { Type mytype = reader.GetFieldType(col); entityType.GetProperty(field.Name).SetValue(entity, Convert.ChangeType(reader.GetValue(col), mytype), null); } else { continue; } } return entity; } public static List<T> ExecuteCollection<T>(SQLiteCommand cmd) { List<T> result = new List<T>(); Type entityType = typeof(T); PropertyInfo[] fieldinfos = entityType.GetProperties(); DbDataReader reader = null; if (conn == null || conn.Length == 0) throw new ArgumentNullException("connectionString"); SQLiteConnection con = new SQLiteConnection(conn); SQLiteTransaction trans = null; PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText); try { reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); } catch (Exception ex) { throw ex; } while (reader.Read()) { T entity = (T)Activator.CreateInstance(entityType); foreach (PropertyInfo field in fieldinfos) { int col = reader.GetOrdinal(field.Name); if (col != -1) { Type mytype = reader.GetFieldType(col); entityType.GetProperty(field.Name).SetValue(entity, Convert.ChangeType(reader.GetValue(col), mytype), null); } else { continue; } } result.Add(entity); } return result; }
  • 相关阅读:
    微软企业库调用Oracle存储过程返回(1个或多个)数据集
    (转)Oracle表空间
    HTML5操作
    完美实现 ASP.NET 2.0 中的URL重写伪静态(映射) &gt;(转载)的简介与内容
    HTML5 audio 详解
    步步为营:Asp.Net使用HttpWebRequest通知,抓取,采集(转)
    js cookie操作
    多线线程
    js with用法
    asp.net AllowSorting="true"仍然不能排序的原因
  • 原文地址:https://www.cnblogs.com/danye/p/2571173.html
Copyright © 2011-2022 走看看