zoukankan      html  css  js  c++  java
  • 利用反射读取数据库数据

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication7
    {
        public class DBHelper
        {
            private static string ConnectionStringCustomers = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
    
    
    
    
            public void Query()
            { }
    
            public T QueryDomain<T>()
            {
                int OrderID = 2;
                Type type = typeof(T);
    
                T t = (T)Activator.CreateInstance(type);
                foreach( var a in type.GetProperties())
                {
                    Console.WriteLine("11");
                }
                string column = string.Join(",", type.GetProperties().Select(p => string.Format("{0}", p.Name)));
    
    
                string sql = string.Format( "select {0} from[{1}] where OrderID={2}",column,type.Name,OrderID);
                using (SqlConnection coon = new SqlConnection(ConnectionStringCustomers))
    
                {
                    SqlCommand sqlcommand = new SqlCommand(sql, coon);
                    
                    coon.Open();
                    SqlDataReader reder=sqlcommand.ExecuteReader(CommandBehavior.CloseConnection);
                    if (reder.Read())
                    {
                        foreach (var a in type.GetProperties())
                        {
                            string aName = a.Name;
                                                   
                            a.SetValue(t, reder[aName]);
    
                            Console.WriteLine("shuxing{0},zhi:{1}", a.Name,a.GetValue(t));
                        }
                    }
                }
                return default(T);
                }
    
    
        }
     
       
    }
    
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      </startup>
      <connectionStrings>
        <add name="connectionstring" connectionString="Data Source=.;Initial Catalog=books;User ID=sa;Password=123123;Integrated Security=True;Pooling=False" />
      </connectionStrings>
    </configuration>
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication7
    {
        class Program
        {
            static void Main(string[] args)
            {
               
               Type type=typeof(Class1);//寻找对象
    
                object oobject=Activator.CreateInstance(type);//寻找对象
    
                foreach (var a in type.GetProperties())
                {
                    Console.WriteLine("属性名称{0},值是{1}", a.Name, a.GetValue(oobject));
                }
                DBHelper dbhelper = new DBHelper();
    
                dbhelper.QueryDomain<Class1>();
                Console.ReadLine();
            }
        }
    }
    

     数据库实体类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication7
    {
        class Class1
        {
            public int OrderID { get; set; }

            public string Address { get; set; }

        }
    }

  • 相关阅读:
    HTML5的智能提示在VisualStudio2010
    浏览器的缓存机制
    等待资源(wait_resource)解码(完整版)
    对quartz的总结
    利用Spring动态对Quartz定时任务管理
    Tomcat源码分析(一)服务启动
    深入分析 Java 中的中文编码问题
    企业搜索引擎开发之连接器connector(一)
    SpringQuartz (一)
    Quartz 项目应用笔记
  • 原文地址:https://www.cnblogs.com/LZXX/p/6706560.html
Copyright © 2011-2022 走看看