ADO.NET枚举数据提供者

ADO.NET 2.0 引入了基于工厂方法设计模式的公共模型概念,它使用简单的应用程序编程接口( API )通过不同的数据提供者进行数据库访问。数据提供者工厂让你不需要在代码中限定使用指定的数据提供者。工厂方法类创建并返回强类型、由请求信息指定的提供者。这让你可以编写不依赖于数据提供者的代码,并且可以在运行时选择数据提供者。使用公共模型,编写的代码很容易支持多个数据库。

数据提供者枚举

使用DbProviderFactories类可以查询安装于本地机器的.NET数据提供者。静态方法GetFactoryClasses()会通过DataTable类型返回实现了DbProviderFactory基类的所有继承类的信息。

1- GetFactoryClasses()方法返回结果的DataTable表定义

列名

说明

Name

数据提供者名称

Description

数据提供者说明

InvariantName

machine.config文件的中的中注册的数据提供者元素唯一标识符。例如,SQL Server数据提供者的唯一标识为”System.Data.SqlClient”。此标识用来编程引用数据提供者。

AssemblyQualifiedNAme

数据提供者的完整名,实例化对象的所有信息(反射)。

 

以下代码用来实现对本地支持的数据提供者的枚举:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt using  System;
    
using  System.Data;
    
using  System.Data.Common;

    
class  Program
    {
        
static   void  Main( string [] args)
        {
            DataTable dt 
=  DbProviderFactories.GetFactoryClasses();
            
foreach  (DataRow row  in  dt.Rows)
            {
                Console.WriteLine(
" {0}\n\r  {1}\n\r  {2}\n\r  {3}\n\r " ,
                    row[
" Name " ], row[ " Description " ], row[ " InvariantName " ],
                    row[
" AssemblyQualifiedName " ]);
            }

            Console.WriteLine(
" Press any key to continue. " );
            Console.ReadKey();
        }
    }


通过以上代码结果获得的所有关于数据提供者的信息都记录在本地
machine.config中,代码如下:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt < system.data >
      
< DbProviderFactories >
        
< add  name ="Odbc Data Provider"  invariant ="System.Data.Odbc"
          description
=".Net Framework Data Provider for Odbc"
          type
="System.Data.Odbc.OdbcFactory,
          System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

        
/>
        
< add  name ="OleDb Data Provider"  invariant ="System.Data.OleDb"
          description
=".Net Framework Data Provider for OleDb"
          type
="System.Data.OleDb.OleDbFactory,
          System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

        
/>
        
< add  name ="OracleClient Data Provider"  invariant ="System.Data.OracleClient"
          description
=".Net Framework Data Provider for Oracle"
          type
="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient,
          Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  />
        
< add  name ="SqlClient Data Provider"  invariant ="System.Data.SqlClient"
          description
=".Net Framework Data Provider for SqlServer"
          type
="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0,
          Culture=neutral, PublicKeyToken=b77a5c561934e089"
  />
        
< add  name ="Microsoft SQL Server Compact Data Provider"
          invariant
="System.Data.SqlServerCe.3.5"
          description
=".NET Framework Data Provider for Microsoft SQL Server Compact"
          type
="System.Data.SqlServerCe.SqlCeProviderFactory,
          System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral,
          PublicKeyToken=89845dcd8080cc91"
  />
       
DbProviderFactories >
     
system.data >

 

我们可以通过数据库提供者枚举动态地添加各种不同类型数据库连接并进行数据库操作,或者通过配置文件指定不同的数据库连接无代码实现多种数据库的连接和访问。这对于数据库客户端应用程序和有多种数据源的Web和Windows Form应用程序都简化了繁杂的编码工作。稍后会讨论通过配置实现多种数据库连接的方法。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-571189/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639172/viewspace-571189/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值