.NET Framework 数据提供程序 (ADO.NET)
更新:November 2007
.NET Framework 数据提供程序用于连接到数据库、执行命令和检索结果。这些结果将直接处理、放置在 DataSet 中以便根据需要向用户公开、与多个源中的数据组合,或在层之间进行远程处理。.NET Framework 数据提供程序是轻量的,它在数据源和代码之间创建最小的分层,并在不降低功能性的情况下提高性能。
下表列出了 .NET Framework 中所包含的数据提供程序。
.NET Framework 数据提供程序 |
说明 |
---|---|
.NET Framework 用于 SQL Server 的数据提供程序 |
提供对 Microsoft SQL Server 7.0 或更高版本中数据的访问。使用 System.Data.SqlClient 命名空间。 |
.NET Framework 用于 OLE DB 的数据提供程序 |
提供对使用 OLE DB 公开的数据源中数据的访问。使用 System.Data.OleDb 命名空间。 |
.NET Framework 用于 ODBC 的数据提供程序 |
提供对使用 ODBC 公开的数据源中数据的访问。使用 System.Data.Odbc 命名空间。 |
.NET Framework 用于 Oracle 的数据提供程序 |
适用于 Oracle 数据源。用于 Oracle 的 .NET Framework 数据提供程序支持 Oracle 客户端软件 8.1.7 和更高版本,并使用 System.Data.OracleClient 命名空间。 |
EntityClient 提供程序 |
提供对实体数据模型 (EDM) 应用程序的数据访问。使用 System.Data.EntityClient 命名空间。 |
.NET Framework 数据提供程序的核心对象
下表概述了组成 .NET Framework 数据提供程序的四个核心对象。
对象 |
说明 |
---|---|
Connection |
建立与特定数据源的连接。所有 Connection 对象的基类均为 DbConnection 类。 |
Command |
对数据源执行命令。公开 Parameters,并可在 Transaction 范围内从 Connection 执行。所有 Command 对象的基类均为 DbCommand 类。 |
DataReader |
从数据源中读取只进且只读的数据流。所有 DataReader 对象的基类均为 DbDataReader 类。 |
DataAdapter |
使用数据源填充 DataSet 并解决更新。所有 DataAdapter 对象的基类均为 DbDataAdapter 类。 |
除了此文档前面的表中所列出的核心类之外,.NET Framework 数据提供程序还包含下表中列出的类。
对象 |
说明 |
---|---|
Transaction |
将命令登记在数据源处的事务中。所有 Transaction 对象的基类均为 DbTransaction 类。ADO.NET 还使用 System.Transactions 命名空间中的类提供对事务的支持。 |
CommandBuilder |
一个帮助器对象,它自动生成 DataAdapter 的命令属性或从存储过程中派生参数信息,并填充 Command 对象的 Parameters 集合。所有 CommandBuilder 对象的基类均为 DbCommandBuilder 类。 |
ConnectionStringBuilder |
一个帮助器对象,它提供一种用于创建和管理由 Connection 对象使用的连接字符串的内容的简单方法。所有 ConnectionStringBuilder 对象的基类均为 DbConnectionStringBuilder 类。 |
Parameter |
定义命令和存储过程的输入、输出和返回值参数。所有 Parameter 对象的基类均为 DbParameter 类。 |
Exception |
在数据源中遇到错误时返回。对于在客户端遇到的错误,.NET Framework 数据提供程序会引发一个 .NET Framework 异常。所有 Exception 对象的基类均为 DbException 类。 |
Error |
公开数据源返回的警告或错误中的信息。 |
ClientPermission |
为 .NET Framework 数据提供程序代码访问安全属性而提供。所有 ClientPermission 对象的基类均为 DBDataPermission 类。 |
用于 SQL Server 的 .NET Framework 数据提供程序 (SqlClient)
用于 SQL Server 的 .NET Framework 数据提供程序 (SqlClient) 使用自己的协议与 SQL Server 进行通信。它是轻量的且性能良好,因为它进行了优化,可直接访问 SQL Server,而无需添加 OLE DB 或开放式数据库连接 (ODBC) 层。下图将用于 SQL Server 的 .NET Framework 数据提供程序与用于 OLE DB 的 .NET Framework 数据提供程序进行对比。用于 OLE DB 的 .NET Framework 数据提供程序通过 OLE DB 服务组件(它提供连接池和事务服务)和用于数据源的 OLE DB 提供程序与 OLE DB 数据源进行通信。
说明: |
---|
用于 ODBC 的 .NET Framework 数据提供程序具有与用于 OLE DB 的 .NET Framework 数据提供程序相似的体系结构;例如,它会对 ODBC 服务组件进行调用。 |
用于 ssNoVersionr 的 dnprdnshort 数据提供程序与用于 OLE DB 的 dnprdnshort 数据提供程序的比较
若要使用用于 SQL Server 的 .NET Framework 数据提供程序,您必须具有对 SQL Server 7.0 或更高版本的访问权限。用于 SQL Server 类的 .NET Framework 数据提供程序位于 System.Data.SqlClient 命名空间中。对于早期版本的 SQL Server,请将用于 OLE DB 的 .NET Framework 数据提供程序与 SQL Server OLE DB 提供程序 System.Data.OleDb 一起使用。
用于 SQL Server 的 .NET Framework 数据提供程序支持本地事务和分布式事务。对于分布式事务,默认情况下,用于 SQL Server 的 .NET Framework 数据提供程序会自动登记在事务中,并自动从 Windows 组件服务或 System.Transactions 获取事务详细信息。有关更多信息,请参见事务和并发 (ADO.NET)。
下面的代码示例演示如何将 System.Data.SqlClient 命名空间包括在您的应用程序中。
Imports System.Data.SqlClient
using System.Data.SqlClient;
用于 OLE DB 的 .NET Framework 数据提供程序
用于 OLE DB 的 .NET Framework 数据提供程序 (OleDb) 通过 COM 互操作使用本机 OLE DB 来启用数据访问。用于 OLE DB 的 .NET Framework 数据提供程序支持本地事务和分布式事务。对于分布式事务,默认情况下,用于 OLE DB 的 .NET Framework 数据提供程序会自动登记在事务中,并自动从 Windows 2000 组件服务获取事务详细信息。有关更多信息,请参见事务和并发 (ADO.NET)。
下表演示已使用 ADO.NET 进行测试的提供程序。
驱动程序 |
提供程序 |
---|---|
SQLOLEDB |
用于 SQL Server 的 Microsoft OLE DB 提供程序 |
MSDAORA |
用于 Oracle 的 Microsoft OLE DB 提供程序 |
Microsoft.Jet.OLEDB.4.0 |
用于 Microsoft Jet 的 OLE DB 提供程序 |
说明: |
---|
建议不要将 Access (Jet) 数据库用作多线程应用程序(如 ASP.NET 应用程序)的数据源。如果必须将 Jet 用作 ASP.NET 应用程序的数据源,请注意连接到 Access 数据库的 ASP.NET 应用程序可能会遇到连接问题。有关使用 ASP.NET 和 Access (Jet) 数据库时的连接问题疑难解答的帮助,请参见位于 Microsoft 知识库中的文章 Q316675“PRB: Cannot Connect to Access Database from ASP.NET”(PRB:无法从 ASP.NET 连接到 Access 数据库)。 |
用于 OLE DB 的 .NET Framework 数据提供程序不支持 OLE DB 2.5 版接口。需要对 OLE DB 2.5 接口的支持的 OLE DB 提供程序将无法与用于 OLE DB 的 .NET Framework 数据提供程序一起正常工作。这包括适用于 Exchange 的 Microsoft OLE DB 提供程序和用于 Internet 发布的 Microsoft OLE DB 提供程序。
用于 OLE DB 的 .NET Framework 数据提供程序不与用于 ODBC 的 OLE DB 提供程序 (MSDASQL) 一起使用。若要使用 ADO.NET 访问 ODBC 数据源,请使用用于 ODBC 的 .NET Framework 数据提供程序。
用于 OLE DB 类的 .NET Framework 数据提供程序位于 System.Data.OleDb 命名空间中。下面的代码示例演示如何将 System.Data.OleDb 命名空间包括在您的应用程序中。
Imports System.Data.OleDb
using System.Data.OleDb;
说明: |
---|
用于 OLE DB 的 .NET Framework 数据提供程序需要 MDAC 2.6 或更高版本,建议使用 MDAC 2.8 Service Pack 1 (SP1)。您可以从 Data Access and Storage Developer Center(数据访问和存储开发中心)下载 MDAC 2.8 SP1。 |
用于 ODBC 的 .NET Framework 数据提供程序
用于 ODBC 的 .NET Framework 数据提供程序 (Odbc) 使用本机 ODBC 驱动程序管理器 (DM) 来启用数据访问。ODBC 数据提供程序支持本地事务和分布式事务两者。对于分布式事务,默认情况下,ODBC 数据提供程序会自动登记在事务中,并自动从 Windows 2000 组件服务获取事务详细信息。有关更多信息,请参见事务和并发 (ADO.NET)。
下表演示已使用 ADO.NET 进行测试的 ODBC 驱动程序。
驱动程序 |
---|
SQL Server |
Microsoft ODBC for Oracle |
Microsoft Access 驱动程序 (*.mdb) |
用于 ODBC 类的 .NET Framework 数据提供程序位于 System.Data.Odbc 命名空间中。
下面的代码示例演示如何将 System.Data.Odbc 命名空间包括在您的应用程序中。
Imports System.Data.Odbc
using System.Data.Odbc;
说明: |
---|
用于 ODBC 的 .NET Framework 数据提供程序需要 MDAC 2.6 或更高版本,建议使用 MDAC 2.8 SP1。您可以从 Data Access and Storage Developer Center(数据访问和存储开发中心)下载 MDAC 2.8 SP1。 |
用于 Oracle 的 .NET Framework 数据提供程序
用于 Oracle 的 .NET Framework 数据提供程序 (OracleClient) 通过 Oracle 客户端连接软件启用对 Oracle 数据源的数据访问。该数据提供程序支持 Oracle 客户端软件 8.1.7 版或更高版本。该数据提供程序支持本地事务和分布式事务两者。有关更多信息,请参见事务和并发 (ADO.NET)。
用于 Oracle 的 .NET Framework 数据提供程序要求系统上安装有 Oracle 客户端软件(8.1.7 版或更高版本),才能连接到 Oracle 数据源。
用于 Oracle 类的 .NET Framework 数据提供程序位于 System.Data.OracleClient 命名空间中,并包含在 System.Data.OracleClient.dll 程序集中。当编译使用该数据提供程序的应用程序时,必须同时引用 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 用于 SQL Server 的数据提供程序 |
建议用于使用 Microsoft SQL Server 7.0 或更高版本的中间层应用程序。 建议用于使用 Microsoft 数据库引擎 (MSDE) 或 SQL Server 7.0 或更高版本的单层应用程序。 建议将用于 SQL Server 的 OLE DB 提供程序 (SQLOLEDB) 与用于 OLE DB 的 .NET Framework 数据提供程序一起使用。 对于 SQL Server 6.5 和更新版本,您必须将用于 SQL Server 的 OLE DB 提供程序与用于 OLE DB 的 .NET Framework 数据提供程序一起使用。 |
.NET Framework 用于 OLE DB 的数据提供程序 |
建议用于使用 SQL Server 6.5 或早期版本的中间层应用程序。 对于 SQL Server 7.0 或更高版本,建议使用用于 SQL Server 的 .NET Framework 数据提供程序。 还建议用于使用 Microsoft Access 数据库的单层应用程序。不建议将 Access 数据库用于中间层应用程序。 |
.NET Framework 用于 ODBC 的数据提供程序 |
建议用于使用 ODBC 数据源的中间层应用程序和单层应用程序。 |
.NET Framework 用于 Oracle 的数据提供程序 |
建议用于使用 Oracle 数据源的中间层应用程序和单层应用程序。 |
EntityClient 提供程序
EntityClient 提供程序可用来基于实体数据模型 (EDM) 访问数据。与其他 .NET Framework 数据提供程序不同,该提供程序不直接与数据源进行交互,而是使用实体 SQL 与基础数据提供程序进行通信。有关更多信息,请参见 EntityClient and Entity SQL。