.NET Framework 数据提供程序.NET Framework Data Providers

.NET Framework 数据提供程序用于连接到数据库、执行命令和检索结果。A .NET Framework data provider is used for connecting to a database, executing commands, and retrieving results. 这些结果将被直接处理,放置在 DataSet 中以便根据需要向用户公开、与多个源中的数据组合,或在层之间进行远程处理。Those results are either processed directly, placed in a DataSet in order to be exposed to the user as needed, combined with data from multiple sources, or remoted between tiers. .NET Framework 数据提供程序是轻量的,它在数据源和代码之间创建最小层,从而提高性能而不牺牲功能。.NET Framework data providers are lightweight, creating a minimal layer between the data source and code, increasing performance without sacrificing functionality.

下表列出了 .NET Framework 中包含的数据提供程序。The following table lists the data providers that are included in the .NET Framework.

.NET Framework data provider — .NET Framework 数据提供程序.NET Framework data provider 描述Description
用于 SQL Server 的 .NET Framework 数据访问接口.NET Framework Data Provider for SQL Server 提供 Microsoft SQL Server 的数据访问。Provides data access for Microsoft SQL Server. 使用 System.Data.SqlClient 命名空间。Uses the System.Data.SqlClient namespace.
用于 OLE DB 的 .NET Framework 数据提供程序.NET Framework Data Provider for OLE DB 提供对使用 OLE DB 公开的数据源中数据的访问。For data sources exposed by using OLE DB. 使用 System.Data.OleDb 命名空间。Uses the System.Data.OleDb namespace.
用于 ODBC 的 .NET Framework 数据提供程序.NET Framework Data Provider for ODBC 提供对使用 ODBC 公开的数据源中数据的访问。For data sources exposed by using ODBC. 使用 System.Data.Odbc 命名空间。Uses the System.Data.Odbc namespace.
用于 Oracle 的 .NET Framework 数据提供程序.NET Framework Data Provider for Oracle 适用于 Oracle 数据源。For Oracle data sources. 用于 Oracle 的 .NET Framework 数据提供程序支持 Oracle 客户端软件版本8.1.7 和更高版本,并使用该 System.Data.OracleClient 命名空间。The .NET Framework Data Provider for Oracle supports Oracle client software version 8.1.7 and later, and uses the System.Data.OracleClient namespace.
EntityClient 提供程序EntityClient Provider 提供对实体数据模型 (EDM) 应用程序的数据访问。Provides data access for Entity Data Model (EDM) applications. 使用 System.Data.EntityClient 命名空间。Uses the System.Data.EntityClient namespace.
.NET Framework SQL Server Compact 4.0 的数据提供程序。.NET Framework Data Provider for SQL Server Compact 4.0. 提供 Microsoft SQL Server Compact 4.0 的数据访问。Provides data access for Microsoft SQL Server Compact 4.0. 使用 System.Data.SqlServerCe 命名空间。Uses the System.Data.SqlServerCe namespace.

.NET Framework 数据提供程序的核心对象Core Objects of .NET Framework Data Providers

下表概述了组成 .NET Framework 数据提供程序的四个核心对象。The following table outlines the four core objects that make up a .NET Framework data provider.

对象Object 描述Description
Connection 建立与特定数据源的连接。Establishes a connection to a specific data source. 所有 Connection 对象的基类均为 DbConnection 类。The base class for all Connection objects is the DbConnection class.
Command 对数据源执行命令。Executes a command against a data source. 公开 Parameters ,并可在 Transaction 范围内从 Connection执行。Exposes Parameters and can execute in the scope of a Transaction from a Connection. 所有 Command 对象的基类均为 DbCommand 类。The base class for all Command objects is the DbCommand class.
DataReader 从数据源中读取只进且只读的数据流。Reads a forward-only, read-only stream of data from a data source. 所有 DataReader 对象的基类均为 DbDataReader 类。The base class for all DataReader objects is the DbDataReader class.
DataAdapter 使用数据源填充 DataSet 并解决更新。Populates a DataSet and resolves updates with the data source. 所有 DataAdapter 对象的基类均为 DbDataAdapter 类。The base class for all DataAdapter objects is the DbDataAdapter class.

除了本文档前面的表中列出的核心类之外,.NET Framework 数据提供程序还包含下表中列出的类。In addition to the core classes listed in the table earlier in this document, a .NET Framework data provider also contains the classes listed in the following table.

对象Object 描述Description
Transaction 将命令登记在数据源处的事务中。Enlists commands in transactions at the data source. 所有 Transaction 对象的基类均为 DbTransaction 类。The base class for all Transaction objects is the DbTransaction class. ADO.NET 还使用 System.Transactions 命名空间中的类提供对事务的支持。ADO.NET also provides support for transactions using classes in the System.Transactions namespace.
CommandBuilder 一个帮助器对象,它自动生成 DataAdapter 的命令属性或从存储过程中派生参数信息,并填充 Parameters 对象的 Command 集合。A helper object that automatically generates command properties of a DataAdapter or derives parameter information from a stored procedure and populates the Parameters collection of a Command object. 所有 CommandBuilder 对象的基类均为 DbCommandBuilder 类。The base class for all CommandBuilder objects is the DbCommandBuilder class.
ConnectionStringBuilder 一个帮助器对象,它提供一种用于创建和管理由 Connection 对象使用的连接字符串的内容的简单方法。A helper object that provides a simple way to create and manage the contents of connection strings used by the Connection objects. 所有 ConnectionStringBuilder 对象的基类均为 DbConnectionStringBuilder 类。The base class for all ConnectionStringBuilder objects is the DbConnectionStringBuilder class.
Parameter 定义命令和存储过程的输入、输出和返回值参数。Defines input, output, and return value parameters for commands and stored procedures. 所有 Parameter 对象的基类均为 DbParameter 类。The base class for all Parameter objects is the DbParameter class.
Exception 在数据源中遇到错误时返回。Returned when an error is encountered at the data source. 对于在客户端遇到的错误,.NET Framework 数据访问接口引发 .NET Framework 异常。For an error encountered at the client, .NET Framework data providers throw a .NET Framework exception. 所有 Exception 对象的基类均为 DbException 类。The base class for all Exception objects is the DbException class.
Error 公开数据源返回的警告或错误中的信息。Exposes the information from a warning or error returned by a data source.
ClientPermission 为 .NET Framework 数据提供程序代码访问安全属性而提供。Provided for .NET Framework data provider code access security attributes. 所有 ClientPermission 对象的基类均为 DBDataPermission 类。The base class for all ClientPermission objects is the DBDataPermission class.

用于 SQL Server 的 .NET Framework 数据提供程序 (SqlClient).NET Framework Data Provider for SQL Server (SqlClient)

用于 SQL Server (SqlClient) 的 .NET Framework 数据提供程序使用其自己的协议与 SQL Server 通信。The .NET Framework Data Provider for SQL Server (SqlClient) uses its own protocol to communicate with SQL Server. 它的性能非常轻,因为它经过优化,无需添加 OLE DB 或开放式数据库连接 (ODBC) 层即可直接访问 SQL Server。It is lightweight and performs well because it is optimized to access a SQL Server directly without adding an OLE DB or Open Database Connectivity (ODBC) layer. 下图对比了用于 OLE DB 的 .NET Framework 数据提供程序 SQL Server 的 .NET Framework 数据提供程序。The following illustration contrasts the .NET Framework Data Provider for SQL Server with the .NET Framework Data Provider for OLE DB. OLE DB 的 .NET Framework 数据提供程序通过提供连接池和事务服务的 OLE DB 服务组件和数据源的 OLE DB 提供程序来与 OLE DB 数据源通信。The .NET Framework Data Provider for OLE DB communicates to an OLE DB data source through both the OLE DB Service component, which provides connection pooling and transaction services, and the OLE DB provider for the data source.

备注

适用于 ODBC 的 .NET Framework 数据提供程序具有与 OLE DB 的 .NET Framework 数据提供程序相似的体系结构;例如,它调入 ODBC 服务组件。The .NET Framework Data Provider for ODBC has a similar architecture to the .NET Framework Data Provider for OLE DB; for example, it calls into an ODBC Service Component.

数据访问接口Data providers
用于 SQL Server 的 .NET Framework 数据提供程序和用于 OLE DB 的 .NET Framework 数据提供程序的比较Comparison of the .NET Framework Data Provider for SQL Server and the .NET Framework Data Provider for OLE DB

SQL Server 类的 .NET Framework 数据提供程序位于 System.Data.SqlClient 命名空间中。The .NET Framework Data Provider for SQL Server classes are located in the System.Data.SqlClient namespace.

用于 SQL Server 的 .NET Framework 数据提供程序支持本地事务和分布式事务。The .NET Framework Data Provider for SQL Server supports both local and distributed transactions. 对于分布式事务,默认情况下,用于 SQL Server 的 .NET Framework 数据提供程序会自动登记在事务中,并从 Windows 组件服务或获取事务详细信息 System.TransactionsFor distributed transactions, the .NET Framework Data Provider for SQL Server, by default, automatically enlists in a transaction and obtains transaction details from Windows Component Services or System.Transactions. 有关详细信息,请参阅 事务和并发For more information, see Transactions and Concurrency.

下面的代码示例演示如何将 System.Data.SqlClient 命名空间包括在您的应用程序中。The following code example shows how to include the System.Data.SqlClient namespace in your applications.

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

用于 OLE DB 的 .NET Framework 数据提供程序.NET Framework Data Provider for OLE DB

用于 OLE DB (OleDb) 的 .NET Framework 数据提供程序通过 COM 互操作使用本机 OLE DB 来启用数据访问。The .NET Framework Data Provider for OLE DB (OleDb) uses native OLE DB through COM interop to enable data access. 用于 OLE DB 的 .NET Framework 数据提供程序支持本地事务和分布式事务。The .NET Framework Data Provider for OLE DB supports both local and distributed transactions. 对于分布式事务,默认情况下,用于 OLE DB 的 .NET Framework 数据提供程序会自动登记在事务中,并从 Windows Component Services 获取事务详细信息。For distributed transactions, the .NET Framework Data Provider for OLE DB, by default, automatically enlists in a transaction and obtains transaction details from Windows Component Services. 有关详细信息,请参阅 事务和并发For more information, see Transactions and Concurrency.

下表显示了已使用 ADO.NET 测试的提供程序。The following table shows the providers that have been tested with ADO.NET.

驱动程序Driver 提供程序Provider
SQLOLEDBSQLOLEDB 适用于 SQL Server 的 Microsoft OLE DB 提供程序Microsoft OLE DB provider for SQL Server
MSDAORAMSDAORA 用于 Oracle 的 Microsoft OLE DB 提供程序Microsoft OLE DB provider for Oracle
Microsoft.Jet.OLEDB.4.0Microsoft.Jet.OLEDB.4.0 用于 Microsoft Jet 的 OLE DB 访问接口OLE DB provider for Microsoft Jet

备注

不建议使用 Access (Jet) 数据库作为多线程应用程序(如 ASP.NET 应用程序)的数据源。Using an Access (Jet) database as a data source for multithreaded applications, such as ASP.NET applications, is not recommended. 如果必须将 Jet 用作 ASP.NET 应用程序的数据源,请注意连接到 Access 数据库的 ASP.NET 应用程序可能会遇到连接问题。If you must use Jet as a data source for an ASP.NET application, realize that ASP.NET applications connecting to an Access database can encounter connection problems.

OLE DB 的 .NET Framework 数据提供程序不支持 OLE DB 版本2.5 接口。The .NET Framework Data Provider for OLE DB does not support OLE DB version 2.5 interfaces. 需要支持 OLE DB 2.5 接口的 OLE DB 提供程序将无法在用于 OLE DB 的 .NET Framework 数据提供程序中正常工作。OLE DB Providers that require support for OLE DB 2.5 interfaces will not function correctly with the .NET Framework Data Provider for OLE DB. 这包括适用于 Exchange 的 Microsoft OLE DB 访问接口和用于 Internet 发布的 Microsoft OLE DB 访问接口。This includes the Microsoft OLE DB provider for Exchange and the Microsoft OLE DB provider for Internet Publishing.

OLE DB 的 .NET Framework 数据提供程序不适用于 ODBC (MSDASQL) 的 OLE DB 提供程序。The .NET Framework Data Provider for OLE DB does not work with the OLE DB provider for ODBC (MSDASQL). 若要使用 ADO.NET 访问 ODBC 数据源,请使用用于 ODBC 的 .NET Framework 数据提供程序。To access an ODBC data source using ADO.NET, use the .NET Framework Data Provider for ODBC.

OLE DB 类的 .NET Framework 数据提供程序位于 System.Data.OleDb 命名空间中。.NET Framework Data Provider for OLE DB classes are located in the System.Data.OleDb namespace. 下面的代码示例演示如何将 System.Data.OleDb 命名空间包括在您的应用程序中。The following code example shows how to include the System.Data.OleDb namespace in your applications.

Imports System.Data.OleDb  
using System.Data.OleDb;  

用于 ODBC 的 .NET Framework 数据提供程序.NET Framework Data Provider for ODBC

ODBC (Odbc) 的 .NET Framework 数据提供程序使用本机 ODBC 驱动程序管理器 (DM) 来实现数据访问。The .NET Framework Data Provider for ODBC (Odbc) uses the native ODBC Driver Manager (DM) to enable data access. ODBC 数据提供程序支持本地事务和分布式事务两者。The ODBC data provider supports both local and distributed transactions. 对于分布式事务,ODBC 提供程序在默认情况下会自动在事务中登记,并从 Windows Component Services 获取事务详细信息。For distributed transactions, the ODBC data provider, by default, automatically enlists in a transaction and obtains transaction details from Windows Component Services. 有关详细信息,请参阅 事务和并发For more information, see Transactions and Concurrency.

下表显示了用 ADO.NET 测试的 ODBC 驱动程序。The following table shows the ODBC drivers tested with ADO.NET.

驱动程序Driver
SQL ServerSQL Server
Microsoft ODBC for OracleMicrosoft ODBC for Oracle
Microsoft Access 驱动程序 (*.mdb)Microsoft Access Driver (*.mdb)

ODBC 类的 .NET Framework 数据提供程序位于 System.Data.Odbc 命名空间中。.NET Framework Data Provider for ODBC classes are located in the System.Data.Odbc namespace.

下面的代码示例演示如何将 System.Data.Odbc 命名空间包括在您的应用程序中。The following code example shows how to include the System.Data.Odbc namespace in your applications.

Imports System.Data.Odbc  
using System.Data.Odbc;  

备注

适用于 ODBC 的 .NET Framework 数据提供程序需要 MDAC 2.6 或更高版本,建议使用 MDAC 2.8 SP1。The .NET Framework Data Provider for ODBC requires MDAC 2.6 or a later version, and MDAC 2.8 SP1 is recommended. 你可以从 Microsoft 下载中心下载 MDAC 2.8 SP1。You can download MDAC 2.8 SP1 from the Microsoft Download Center.

用于 Oracle 的 .NET Framework 数据提供程序.NET Framework Data Provider for Oracle

用于 Oracle (System.data.oracleclient) 的 .NET Framework 数据提供程序可通过 Oracle 客户端连接软件启用对 Oracle 数据源的数据访问。The .NET Framework Data Provider for Oracle (OracleClient) enables data access to Oracle data sources through Oracle client connectivity software. 该数据提供程序支持 Oracle 客户端软件 8.1.7 版或更高版本。The data provider supports Oracle client software version 8.1.7 or a later version. 该数据提供程序支持本地事务和分布式事务两者。The data provider supports both local and distributed transactions. 有关详细信息,请参阅 事务和并发For more information, see Transactions and Concurrency.

.NET Framework 用于 Oracle 的数据提供程序需要 Oracle 客户端软件 (版本8.1.7 或更高) 版本,然后才能连接到 Oracle 数据源。The .NET Framework Data Provider for Oracle requires Oracle client software (version 8.1.7 or a later version) on the system before you can connect to an Oracle data source.

用于 Oracle 类的 .NET Framework 数据提供程序位于 System.Data.OracleClient 命名空间中,并包含在 System.Data.OracleClient.dll 程序集中。.NET Framework Data Provider for Oracle classes are located in the System.Data.OracleClient namespace and are contained in the System.Data.OracleClient.dll assembly. 当编译使用该数据提供程序的应用程序时,必须同时引用 System.Data.dllSystem.Data.OracleClient.dllYou must reference both the System.Data.dll and the System.Data.OracleClient.dll when you compile an application that uses the data provider.

下面的代码示例演示如何将 System.Data.OracleClient 命名空间包括在您的应用程序中。The following code example shows how to include the System.Data.OracleClient namespace in your applications.

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

选择 .NET Framework 数据提供程序Choosing a .NET Framework Data Provider

根据应用程序的设计和数据源,您选择的 .NET Framework 数据提供程序可以提高应用程序的性能、功能和完整性。Depending on the design and data source for your application, your choice of .NET Framework data provider can improve the performance, capability, and integrity of your application. 下表讨论了每个 .NET Framework 数据提供程序的优点和局限性。The following table discusses the advantages and limitations of each .NET Framework data provider.

提供程序Provider 说明Notes
用于 SQL Server 的 .NET Framework 数据访问接口.NET Framework Data Provider for SQL Server 建议用于使用 Microsoft SQL Server 的中间层应用程序。Recommended for middle-tier applications that use Microsoft SQL Server.

建议用于使用 Microsoft 数据库引擎 (MSDE) 或 SQL Server 的单层应用程序。Recommended for single-tier applications that use Microsoft Database Engine (MSDE) or SQL Server.

建议使用用于 .NET Framework 的 OLE DB 数据提供程序的 SQL Server (SQLOLEDB) 的 OLE DB 提供程序。Recommended over use of the OLE DB provider for SQL Server (SQLOLEDB) with the .NET Framework Data Provider for OLE DB.
用于 OLE DB 的 .NET Framework 数据提供程序.NET Framework Data Provider for OLE DB 对于 SQL Server,建议使用 SQL Server 的 .NET Framework 数据提供程序,而不是此提供程序。For SQL Server, the .NET Framework Data Provider for SQL Server is recommended instead of this provider.

建议用于使用 Microsoft Access 数据库的单层应用程序。Recommended for single-tier applications that use Microsoft Access databases. 不建议将 Access 数据库用于中间层应用程序。Use of an Access database for a middle-tier application is not recommended.
用于 ODBC 的 .NET Framework 数据提供程序.NET Framework Data Provider for ODBC 建议用于使用 ODBC 数据源的中间层应用程序和单层应用程序。Recommended for middle and single-tier applications that use ODBC data sources.
用于 Oracle 的 .NET Framework 数据提供程序.NET Framework Data Provider for Oracle 建议用于使用 Oracle 数据源的中间层应用程序和单层应用程序。Recommended for middle and single-tier applications that use Oracle data sources.

EntityClient 提供程序EntityClient Provider

EntityClient 提供程序可用来基于实体数据模型 (EDM) 访问数据。The EntityClient provider is used for accessing data based on an Entity Data Model (EDM). 与其他 .NET Framework 数据提供程序不同,该提供程序不直接与数据源进行交互,Unlike the other .NET Framework data providers, it does not interact directly with a data source. 而是使用实体 SQL 与基础数据提供程序进行通信。Instead, it uses Entity SQL to communicate with the underlying data provider. 有关详细信息,请参阅 用于 Entity Framework 的 EntityClient 提供程序For more information, see EntityClient Provider for the Entity Framework.

请参阅See also