.NET Framework 資料提供者

.NET Framework Data Provider 的用途是連接資料庫、執行命令和擷取結果。 這些結果會直接處理、放入 DataSet 中以便視需要而公開給使用者、與多個來源的資料結合,或在各層之間進行遠端控制。 .NET Framework Data Provider 的用途是連接資料庫、執行命令和擷取結果。

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

.NET Framework Data Provider - .NET Framework 資料提供者 描述
.NET Framework Data Provider for SQL Server 提供 Microsoft SQL Server 的資料存取。 使用 System.Data.SqlClient 命名空間。
.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 提供者 為實體資料模型 (EDM) 應用程式提供資料存取。 使用 System.Data.EntityClient 命名空間。
.NET Framework Data Provider for SQL Server Compact 4.0。 提供 Microsoft SQL Server Compact 4.0 的資料存取。 使用 System.Data.SqlServerCe 命名空間。

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

下表列出構成 .NET Framework Data Provider 的四個核心物件。

Object 描述
Connection 建立連至特定資料來源的連接。 Connection 類別是所有 DbConnection 物件的基底類別 (Base Class)。
Command 對資料來源執行命令。 公開 Parameters ,並可在 TransactionConnection範圍中執行。 Command 類別是所有 DbCommand 物件的基底類別 (Base Class)。
DataReader 從資料來源讀取順向唯讀的資料流。 DataReader 類別是所有 DbDataReader 物件的基底類別 (Base Class)。
DataAdapter 使用資料來源填入 DataSet 並解析更新。 DataAdapter 類別是所有 DbDataAdapter 物件的基底類別 (Base Class)。

除了上表列出的核心類別外,.NET Framework Data Provider 也包含下表所列出的類別。

Object 描述
Transaction 可讓您將命令登記在資料來源的異動中。 Transaction 類別是所有 DbTransaction 物件的基底類別 (Base Class)。 ADO.NET 也支援使用 System.Transactions 命名空間中類別的交易。
CommandBuilder Helper 物件,可自動產生 DataAdapter 的命令屬性,或從預存程序衍生參數資訊並填入 Parameters 物件的 Command 集合。 CommandBuilder 類別是所有 DbCommandBuilder 物件的基底類別 (Base Class)。
ConnectionStringBuilder Helper 物件,可讓您簡單地建立和管理 Connection 物件所使用的連接字串內容。 ConnectionStringBuilder 類別是所有 DbConnectionStringBuilder 物件的基底類別 (Base Class)。
Parameter 定義命令和預存程序的輸入、輸出和傳回值參數。 Parameter 類別是所有 DbParameter 物件的基底類別 (Base Class)。
Exception 在資料來源發生錯誤時傳回。 如果錯誤發生在用戶端,則 .NET Framework Data Provider 會擲回 .NET Framework 例外狀況。 Exception 類別是所有 DbException 物件的基底類別 (Base Class)。
Error 公開資料來源傳回的警告或錯誤資訊。
ClientPermission 提供 .NET Framework Data Provider 所需的程式碼存取安全性屬性。 ClientPermission 類別是所有 DBDataPermission 物件的基底類別 (Base Class)。

.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 元件。

Data providers
比較 .NET Framework Data Provider for SQL Server 和 .NET Framework Data Provider for OLE DB

.NET Framework Data Provider for SQL Server 位類別於 System.Data.SqlClient 命名空間中。

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

下列程式碼範例顯示如何將 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 元件服務取得交易詳細資料。 如需詳細資訊,請參閱交易和並行

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

驅動程式 Provider
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 資料庫時,可能會出現連接問題。

.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 ODBC

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

下表顯示 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。

.NET Framework Data Provider for Oracle

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

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

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

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

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

選擇 .NET Framework 資料提供者

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

Provider 備註
.NET Framework Data Provider for SQL Server 建議使用 Microsoft SQL Server 的中介層應用程式採用。

建議使用 Microsoft Database Engine (MSDE) 或 SQL Server 的單層應用程式採用。

建議使用 OLE DB provider for SQL Server (SQLOLEDB) 搭配 .NET Framework Data Provider for OLE DB。
.NET Framework Data Provider for OLE DB 針對 SQL Server,建議使用 .NET Framework Data Provider for SQL Serve,而不是此提供者。

建議使用 Microsoft Access 資料庫的單層應用程式採用。 不建議中介層應用程式採用 Access 資料庫。
.NET Framework Data Provider for ODBC 建議使用 ODBC 資料來源的中介層及單層應用程式採用。
.NET Framework Data Provider for Oracle 建議使用 Oracle 資料來源的中介層及單層應用程式採用。

EntityClient 提供者

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

另請參閱