zoukankan      html  css  js  c++  java
  • 通过反射实现多数据访问

    每种数据库都有自己的链接组件。比如:System.Data.SqlClient,System.Data.OracleClient,Oracle.DataAccess.Client,MySql.Data,IBM.Data.DB2,Sybase.Data.AseClient,iAnywhere.Data.AsaClient,Npgsql等等!

    反射:

    通过【Type类】可以访问任意数据类型信息,常使用Type类的静态方法GetType(),如Type t =Type.GetType("MySql.Data");这就拿到了组件(提前得先引用)的元数据。

    (1)通过【Assembly类】加载程序集,例如:Assembly  m_asmSqlClient = Assembly.LoadWithPartialName(“Oracle.DataAccess”);//LoadWithPartialName()使用部分名称从应用程序目录或从全局程序集缓存加载程序集。

    (2)Type m_typSqlConnection = m_asmSqlClient.GetType("Oracle.DataAccess.Client.OracleConnection" ) //GetType()可以得到加载进来的程序集中的类

    (3)ConstructorInfo info = m_typSqlConnection.GetConstructor(types); //GetConstructor(Type types )//根据参数类型得到实例,比如:Type[] types = new Type[1]; types[0] = Type.GetType("System.String"); 表示参数是字符串

    (4)IDbConnection con = info.Invoke(parameters) as IDbConnection; //Invoke()初始化传入符合的参数类型,得到需要的类,参数:object[] parameters = new object[1]; parameters[0] = “链接字符串”; 

    //【Type类】

    1.获取给定类型的Type引用有3种方式:
      a.使用typeof运算符,如Type t = typeof(int);
      b.使用GetType()方法,如int i;Type t = i.GetType();
      c.使用Type类的静态方法GetType(),如Type t =Type.GetType("System.Double");
    2.Type的属性:
      Name:数据类型名;
      FullName:数据类型的完全限定名,包括命名空间;
      Namespace:数据类型的命名空间;
      BaseType:直接基本类型;
      UnderlyingSystemType:映射类型;
    3.Type的方法:
      GetMethod():返回一个方法的信息;
      GetMethods():返回所有方法的信息。

    //【Assembly】

    System.Reflection.Assembly类是一个比较常用到的类,在反射中就经常用到。

    Assembly是一个包含来程序的名称,版本号,自我描述,文件关联关系和文件位置等信息的一个集合。在.net框架中通过Assembly类来支持,该类位于System.Reflection下,物理位置位于:mscorlib.dll。

    在Assembly有很多的方法和属性,里面的加载程序集有3个方法,分别是Load、LoadFrom和LoadFile。

    //【ConstructorInfo 】

    ConstructorInfo 类可以发现类构造函数的属性 (Attribute) 并提供对构造函数元数据的访问权。说白了通过它可以访问类的属性和方法。

  • 相关阅读:
    ajax 笔记--调用WebService实现求两数之和
    多数据之间的连接操作集中几个.NET常用的方法(不完整)
    判断用户是否存在(通过参数来实现)
    我的机子放到公司了
    给同事过生日,我弄菜,给同事买饭,我值班。
    多数据之间的连接操作MSSQL(不完整)
    TreeView连接数据
    字符编码
    计算机基础
    python入门
  • 原文地址:https://www.cnblogs.com/it-xcn/p/5955919.html
Copyright © 2011-2022 走看看