ADO.NET列舉資料提供者

iDotNetSpace發表於2009-04-08
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/

--&gtusing 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章