用反射实现数据库读出数据转化为对应的实体list

            SqlConnection con = new SqlConnection(ConnectString);
            con.Open();
            SqlCommand com = new SqlCommand(sql,con);
            SqlDataReader reader = com.ExecuteReader();
            Assembly assembly = Assembly.GetExecutingAssembly();
            var type  =assembly.GetType(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace+"." + tablename);
            List<object> list = new List<object>();
            while (reader.Read())
            {
                object[] parameters= new object[1];
                parameters[0] = reader;
                var obj = assembly.CreateInstance(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + tablename, true, System.Reflection.BindingFlags.Default,
       null, parameters, null, null);
                list.Add(obj);
            }
            con.Close();
            return list;

表与对应的类的名称相同,类中需要写一个构造函数,用SqlDataReader 对象初始化类的属性(其他方法也行),创建对象的时候会调用构造函数初始化对象。

时间: 2024-11-06 11:05:03

用反射实现数据库读出数据转化为对应的实体list的相关文章

[转]C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值

本文来自:http://www.cnblogs.com/mrchenzh/archive/2010/05/31/1747937.html /***************************************** * 说明:利用反射将数据库查询的内容自动绑定 *       到实体类 * * 时间:1:49 2009-9-19 * * 程序员:王文壮 * ***************************************/ /****************数据库脚本***

通过反射获取数据库的数据 将其转化为相应类型的数据

反射可以动态获取数据的类型,Type 类可以获取其中的 字段.方法.属性等. 尤其是将字段与属性做区分可以让我们可以获取,自己想获得的.废话不多说上代码. 先将数据导入的类,写下: 1 using System; 2 using UnityEngine; 3 4 namespace ARPGSimpleDemo.Skill 5 { 6 /// <summary> 7 /// 技能数据 8 /// </summary> 9 [Serializable] 10 public class

运用反射原理的简单工厂模式和运用反射原理从数据库里读出数据直接封装到实体集合里

一:简单工厂 最初学习的一个运用简单工厂的例子是做一个计算器: 首先是接口 public interface Cal { public double Calcu(double num1,double num2); } 然后是加减乘除类实现计算接口: public class Add implements Cal{ @Override public double Calcu(double num1, double num2) { return num1+num2; } } 再写一个工厂类,里面有一

JDBC远程从一个MySql数据库中的一张表里面读出数据(这个数据库需要用SSH隧道连接,大约8W条数据),然后分别插入到另一个数据库中的两张表里

package com.eeepay.lzj.db; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.jcraft.jsch.JSch; import com.jcraft.jsc

hadoop与mysql数据库相连读出数据

转自:http://blog.csdn.net/qwertyu8656/article/details/6426054 用0.20.2版本 有些类已经过时 但必须要用 因为新版本对数据库连接支持不够 运行mysql创建数据库School,建立teacher表,并自行填写值 [c-sharp] view plaincopy DROP TABLE IF EXISTS `school`.`teacher`; CREATE TABLE  `school`.`teacher` ( `id` int(11)

记录一次帮策划写的基于VBA的数据转化工具

由于策划计算的表格结构和程序实际使用的数据表结构不一定一致,因此有时候经常需要做数据转化.把策划自己的表格转成程序需要的格式,然后再导入数据库.这次也是策划有个表,里面有多个字段分别表示多个属性,但是程序考虑到通用,不想一个属性增加一个字段,因此想用一个字段,然后采用JSON格式来表示所有属性. 因此,帮策划写了个VBA实现多个字段合并成JSON的.这个VBA可以通过Ctrl表格来配置: 源表名:策划表的名字 目标表名:程序表的名字 字段映射:程序表的字段名对应策划表的字段名.目前支持字段合并(

三层架构之抽象工厂加反射----实现数据库转换

项目要求使用SqlServer数据库与Access数据库切换.需求是只要把webconfig中的配置一改就可以实现数据来源在SqlServer与Access之间切换.经过思考,觉得可以用抽象工厂来实现这一功能,后边仔细一想,感觉有点麻烦,后边想到了用反射来实现. 思路是这样的:将数据访问层抽取出来,提取成接口DomeIDAL类库,再不同的数据库建立不同的数据访问层实现接口,如使用SqlServer话就对应有一个SqlServer的数据访问类库项目SqlServerDAL,里面的类对应实现Demo

从数据库读取数据Table后转成对应的实体泛型方法

1 每次读取数据库的数据都是一个DataTable表,以前是傻傻的每个表都写一个转换的类,后来自己研究一个泛型方法,适用于所有转换 /// <summary> /// 返回一个集合 /// </summary> /// <typeparam name="T2">要传入的实体</typeparam> /// <param name="strSql">sql语句或者存储过程类型</param> //

使用反射将DataTable的数据转成实体类

利用反射避免了硬编码出现的错误,但是实体类的属性名必须和数据库名字对应(相同) 1.利用反射把DataTable的数据写到单个实体类 1 /// <summary> 2 /// 利用反射把DataTable的数据写到单个实体类 3 /// </summary> 4 /// <typeparam name="T"></typeparam> 5 /// <param name="dtSource"></p