.NET Framework 資料提供者 (ADO.NET)

更新: November 2007

.NET Framework 資料提供者的用途是連接資料庫、執行命令和擷取結果。這些結果會直接處理、放入 DataSet 以在必要時公開給使用者、與多個來源的資料結合,或在不同層級之間進行遠端控制。.NET Framework 資料提供者是輕量的,會在資料來源及程式碼之間建立最少層次,以在不犧牲功能的前提下提升效能。

下表列出包含在 .NET Framework 中的資料提供者。

.NET Framework 資料提供者

說明

.NET Framework Data Provider for SQL Server

提供 Microsoft SQL Server 7.0 (含) 以後版本的資料存取。使用 System.Data.SqlClient 命名空間 (Namespace)。

.NET Framework Data Provider for OLE DB

使用 OLE DB 公開的資料來源。使用 System.Data.OleDb 命名空間。

.NET Framework Data Provider for ODBC

使用 ODBC 公開的資料來源。使用 System.Data.Odbc 命名空間。

.NET Framework Data Provider for Oracle

針對 Oracle 資料來源。.NET Framework Data Provider for Oracle 支援 Oracle 用戶端軟體 8.1.7 (含) 以後版本,並使用 System.Data.OracleClient 命名空間。

EntityClient 提供者

為 Entity Data Model (EDM) 應用程式提供資料存取。使用 System.Data.EntityClient 命名空間。

.NET Framework 資料提供者的核心物件

下表列出構成 .NET Framework 資料提供者的四個核心物件。

物件

描述

Connection

建立連至特定資料來源的連接。DbConnection 類別是所有 Connection 物件的基底類別 (Base Class)。

Command

對資料來源執行命令。公開 Parameters,並可在 Connection 的 Transaction 範圍中執行。DbCommand 類別是所有 Command 物件的基底類別。

DataReader

從資料來源讀取順向唯讀的資料流。DbDataReader 類別是所有 DataReader 物件的基底類別。

DataAdapter

使用資料來源填入 DataSet 並解析更新。DbDataAdapter 類別是所有 DataAdapter 物件的基底類別。

除了上表列出的核心類別外,.NET Framework 資料提供者也包含下表所列出的類別。

物件

描述

Transaction

可讓您將命令登記在資料來源的交易中。DbTransaction 類別是所有 Transaction 物件的基底類別。ADO.NET 也支援使用 System.Transactions 命名空間中類別的交易。

CommandBuilder

Helper 物件,可自動產生 DataAdapter 的命令屬性,或從預存程序衍生參數資訊並填入 Command 物件的 Parameters 集合。DbCommandBuilder 類別是所有 CommandBuilder 物件的基底類別。

ConnectionStringBuilder

Helper 物件,可讓您簡單地建立和管理 Connection 物件所使用的連接字串內容。DbConnectionStringBuilder 類別是所有 ConnectionStringBuilder 物件的基底類別。

Parameter

定義命令和預存程序的輸入、輸出和傳回值參數。DbParameter 類別是所有 Parameter 物件的基底類別。

Exception

在資料來源發生錯誤時傳回。如果錯誤發生在用戶端,則 .NET Framework 資料提供者會擲回 .NET Framework 例外狀況 (Exception)。DbException 類別是所有 Exception 物件的基底類別。

Error

公開資料來源傳回的警告或錯誤資訊。

ClientPermission

提供 .NET Framework 資料提供者所需的程式碼存取安全性屬性。DBDataPermission 類別是所有 ClientPermission 物件的基底類別。

.NET Framework Data Provider for SQL Server (SqlClient)

.NET Framework Data Provider for SQL Server (SqlClient) 會使用自己的通訊協定與 SQL Server 通訊。此為輕量型的提供者且其效能很好,因為已經最佳化可以直接存取 SQL Server,而不需加上 OLE DB 或「開放式資料庫連接」(Open Database Connectivity,ODBC) 層。下列圖例將 .NET Framework Data Provider for SQL Server 和 .NET Framework Data Provider for OLE DB 進行比較。.NET Framework Data Provider for OLE DB 透過下列元件與 OLE DB 資料來源通訊:一為 OLE DB Service 元件 (提供連接共用和交易服務),二為 OLE DB 提供者 (提供資料來源)。

注意事項:

.NET Framework Data Provider for ODBC 的架構和 .NET Framework Data Provider for OLE DB 的架構類似,例如,前者會呼叫 ODBC Service 元件。

dnprdnshort Data Provider for ssNoVersionr 和 the dnprdnshort Data Provider for OLE DB 的比較

資料提供者

若要使用 .NET Framework Data Provider for SQL Server,您必須存取 SQL Server 7.0 (含) 以後版本。「.NET Framework Data Provider for SQL Server」類別位於 System.Data.SqlClient 命名空間中。若使用的是舊版 SQL Server,則請使用 .NET Framework Data Provider for OLE DB 搭配 SQL Server OLE DB 提供者 System.Data.OleDb

.NET Framework Data Provider for SQL Server 支援本機和分散式交易。若使用的是分散式交易,則 .NET Framework Data Provider for SQL Server 預設會自動在交易中登記,並從「Windows 元件服務」或System.Transactions取得交易詳細資料。如需詳細資訊,請參閱交易和並行 (ADO.NET)

下列程式碼範例顯示如何將 System.Data.SqlClient 命名空間納入您的應用程式。

Imports System.Data.SqlClient
using System.Data.SqlClient;

.NET Framework Data Provider for OLE DB

.NET Framework Data Provider for OLE DB (OleDb) 會使用原生 OLE DB 透過 COM Interop 來啟用資料存取。.NET Framework Data Provider for OLE DB 可同時支援本機及分散式交易。若使用的是分散式交易,則 .NET Framework Data Provider for OLE DB 預設會自動在交易中登記,並從「Windows 2000 元件服務」取得交易詳細資料。如需詳細資訊,請參閱交易和並行 (ADO.NET)

下表顯示用 ADO.NET 測試過的提供者。

驅動程式

提供者

SQLOLEDB

Microsoft OLE DB Provider for SQL Server

MSDAORA

Microsoft OLE DB Provider for Oracle

Microsoft.Jet.OLEDB.4.0

OLE DB provider for Microsoft Jet

注意事項:

建議您最好不要將 Access (Jet) 資料庫當做多執行緒應用程式 (例如 ASP.NET 應用程式) 的資料來源。如果 ASP.NET 應用程式必須使用 Jet 做為資料來源,則 ASP.NET 應用程式連接 Access 資料庫時,可能會出現連接問題。如需使用 ASP.NET 和 Access (Jet) 資料庫時所發生連接問題的疑難排解說明,請參閱 Microsoft 知識庫 中的文件 Q316675 <PRB:無法從 ASP.NET 連接到 Access 資料庫>(英文)。

.NET Framework Data Provider for OLE DB 不支援 OLE DB 2.5 版的介面。OLE DB 提供者若需要 OLE DB 2.5 介面的支援,將無法用 .NET Framework Data Provider for OLE DB 正常運作。這包括 Microsoft OLE DB provider for Exchange 和 Microsoft OLE DB provider for Internet Publishing。

.NET Framework Data Provider for OLE DB 無法用於 OLE DB provider for ODBC (MSDASQL)。若要使用 ADO.NET 存取 ODBC 資料來源,請使用 .NET Framework Data Provider for ODBC。

.NET Framework Data Provider for OLE DB 類別位於 System.Data.OleDb 命名空間中。下列程式碼範例顯示如何將 System.Data.OleDb 命名空間納入您的應用程式。

Imports System.Data.OleDb
using System.Data.OleDb;
注意事項:

.NET Framework Data Provider for OLE DB 需要使用 MDAC 2.6 (含) 以後版本,並建立使用 MDAC 2.8 Service Pack 1 (SP1)。您可以從資料存取和儲存開發人員中心 (英文) 下載 MDAC 2.8 SP1。

.NET Framework Data Provider for ODBC

.NET Framework Data Provider for ODBC (Odbc) 會使用原生「ODBC 驅動程式管理員」(DM) 來啟用資料存取。ODBC 資料提供者支援本機和分散式交易。若使用的是分散式交易,則 ODBC 資料提供者預設會自動在交易中登記,並從「Windows 2000 元件服務」取得交易詳細資料。如需詳細資訊,請參閱交易和並行 (ADO.NET)

下表顯示 ADO.NET 測試過的 ODBC 驅動程式。

驅動程式

SQL Server

Oracle 的 Microsoft ODBC

Microsoft Access Driver (*.mdb)

.NET Framework Data Provider for ODBC 類別位於 System.Data.Odbc 命名空間中。

下列程式碼範例顯示如何將 System.Data.Odbc 命名空間納入您的應用程式。

Imports System.Data.Odbc
using System.Data.Odbc;
注意事項:

.NET Framework Data Provider for ODBC 需要使用 MDAC 2.6 (含) 以後版本,並建議使用 MDAC 2.8 SP1。您可以從資料存取和儲存開發人員中心 (英文) 下載 MDAC 2.8 SP1。

.NET Framework Data Provider for Oracle

.NET Framework Data Provider for Oracle (OracleClient) 會透過 Oracle 用戶端連接軟體啟用對 Oracle 資料來源的資料存取。資料提供者支援 Oracle 用戶端軟體 8.1.7 (含) 以後版本。資料提供者支援本機和分散式交易。如需詳細資訊,請參閱交易和並行 (ADO.NET)

.NET Framework Data Provider for Oracle 要求先在系統上安裝 Oracle 用戶端軟體 (8.1.7 (含) 以後版本),以便連接到 Oracle 資料來源。

.NET Framework Data Provider for Oracle 類別位於 System.Data.OracleClient 命名空間中,且包含在 System.Data.OracleClient.dll 組件 (Assembly) 中。如果編譯的應用程式有使用資料提供者,則必須參考 System.Data.dll 和 System.Data.OracleClient.dll。

下列程式碼範例顯示如何在應用程式中納入 System.Data.OracleClient 命名空間。

Imports System.Data
Imports System.Data.OracleClient
using System.Data;
using System.Data.OracleClient;

選擇 .NET Framework 資料提供者

請依照您應用程式的設計和資料來源選擇 .NET Framework 資料提供者,以提升應用程式的效能、功能和完整性。下表討論每個 .NET Framework 資料提供者的優點和限制。

提供者

附註

.NET Framework Data Provider for SQL Server

建議使用 SQL Server 7.0 (含) 以後版本的中介層應用程式採用。

建議使用 Microsoft Database Engine (MSDE) 或 SQL Server 7.0 (含) 以後版本的單層應用程式採用。

建議使用 OLE DB provider for SQL Server (SQLOLEDB) 搭配 .NET Framework Data Provider for OLE DB。

若使用的是 SQL Server 6.5 及更早的版本,則必須使用 OLE DB provider for SQL Server 搭配 .NET Framework Data Provider for OLE DB。

.NET Framework Data Provider for OLE DB

建議使用 SQL Server 6.5 或更早版本的中介層應用程式採用。

若使用的是 SQL Server 7.0 (含) 以後版本,則建議使用 .NET Framework Data Provider for SQL Server。

亦建議使用 Microsoft Access 資料庫的單層應用程式採用。不建議中介層應用程式採用 Access 資料庫。

.NET Framework Data Provider for ODBC

建議使用 ODBC 資料來源的中介層及單層應用程式採用。

.NET Framework Data Provider for Oracle

建議使用 Oracle 資料來源的中介層及單層應用程式採用。

EntityClient 提供者

EntityClient 提供者是用於根據 Entity Data Model (EDM) 存取資料。與其他 .NET Framework 資料提供者不同的是,它不會直接與資料來源互動。不過,它會使用 Entity SQL 與基礎資料提供者進行通訊。如需詳細資訊,請參閱 EntityClient and Entity SQL

請參閱

其他資源

ADO.NET 概觀

擷取和修改 ADO.NET 中的資料