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; }
  • 相关阅读:
    痞子衡嵌入式:利用i.MXRT1060,1010上新增的FlexSPI地址重映射(Remap)功能可安全OTA
    “既生 ExecutorService, 何生 CompletionService?”
    55
    .map() is not a function【js报错】
    内网穿透之流量代理转发
    JDK8 String类知识总结
    Java并发编程(07):Fork/Join框架机制详解
    数据源管理 | 分布式NoSQL系统,Cassandra集群管理
    Solon详解(三)- Solon的web开发
    Solon详解(二)- Solon的核心
  • 原文地址:https://www.cnblogs.com/danye/p/2571173.html
Copyright © 2011-2022 走看看