.NET Framework 数据提供程序
.NET Framework 数据提供程序用于连接到数据库、执行命令和检索结果。 这些结果将被直接处理,放置在 DataSet 中以便根据需要向用户公开、与多个源中的数据组合,或在层之间进行远程处理。 .NET Framework 数据提供程序是轻量程序,可以在数据源与代码之间创建一个精简层,并在不弱化功能的情况下提高性能。
下表列出了 .NET Framework 中包含的数据提供程序。
.NET Framework data provider — .NET Framework 数据提供程序 | 说明 |
---|---|
用于 SQL Server 的 .NET Framework 数据访问接口 | 提供 Microsoft SQL Server 的数据访问。 使用 System.Data.SqlClient 命名空间。 |
用于 OLE DB 的 .NET Framework 数据提供程序 | 提供对使用 OLE DB 公开的数据源中数据的访问。 使用 System.Data.OleDb 命名空间。 |
用于 ODBC 的 .NET Framework 数据提供程序 | 提供对使用 ODBC 公开的数据源中数据的访问。 使用 System.Data.Odbc 命名空间。 |
用于 Oracle 的 .NET Framework 数据提供程序 | 适用于 Oracle 数据源。 用于 Oracle 的 .NET Framework 数据提供程序支持 Oracle 客户端软件 8.1.7 和更高版本,并使用 System.Data.OracleClient 命名空间。 |
EntityClient 提供程序 | 提供对实体数据模型 (EDM) 应用程序的数据访问。 使用 System.Data.EntityClient 命名空间。 |
用于 SQL Server Compact 4.0 的 .NET Framework 数据提供程序。 | 提供 Microsoft SQL Server Compact 4.0 的数据访问。 使用 System.Data.SqlServerCe 命名空间。 |
.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 的命令属性或从存储过程中派生参数信息,并填充 Parameters 对象的 Command 集合。 所有 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 服务组件。
用于 SQL Server 的 .NET Framework 数据提供程序类位于 System.Data.SqlClient 命名空间中。
用于 SQL Server 的 .NET Framework 数据提供程序支持本地事务和分布式事务。 对于分布式事务,默认情况下,用于 SQL Server 的 .NET Framework 数据提供程序会自动在事务中登记,并从 Windows 组件服务或 System.Transactions 获取事务详细信息。 有关详细信息,请参阅事务和并发。
下面的代码示例演示如何将 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 组件服务获取事务详细信息。 有关详细信息,请参阅事务和并发。
下表显示了已使用 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 应用程序可能会遇到连接问题。
用于 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;
用于 ODBC 的 .NET Framework 数据提供程序
用于 ODBC 的 .NET Framework 数据提供程序 (Odbc) 使用本机 ODBC 驱动程序管理器 (DM) 来启用数据访问。 ODBC 数据提供程序支持本地事务和分布式事务两者。 对于分布式事务,ODBC 提供程序在默认情况下会自动在事务中登记,并从 Windows Component Services 获取事务详细信息。 有关详细信息,请参阅事务和并发。
下表显示了已使用 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。
用于 Oracle 的 .NET Framework 数据提供程序
用于 Oracle 的 .NET Framework 数据提供程序 (OracleClient) 通过 Oracle 客户端连接软件启用对 Oracle 数据源的数据访问。 该数据提供程序支持 Oracle 客户端软件 8.1.7 版或更高版本。 该数据提供程序支持本地事务和分布式事务两者。 有关详细信息,请参阅事务和并发。
用于 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 数据提供程序的优势和局限性。
提供程序 | 备注 |
---|---|
用于 SQL Server 的 .NET Framework 数据访问接口 | 建议用于使用 Microsoft SQL Server 的中间层应用程序。 建议用于使用 Microsoft 数据库引擎 (MSDE) 或 SQL Server 的单层应用程序。 建议使用此提供程序,而不要将用于 SQL Server 的 OLE DB 提供程序 (SQLOLEDB) 与用于 OLE DB 的 .NET Framework 数据提供程序一起使用。 |
用于 OLE DB 的 .NET Framework 数据提供程序 | 对于 SQL Server,建议使用用于 SQL Server 的 .NET Framework 数据提供程序,而不要使用此提供程序。 建议用于使用 Microsoft Access 数据库的单层应用程序。 不建议将 Access 数据库用于中间层应用程序。 |
用于 ODBC 的 .NET Framework 数据提供程序 | 建议用于使用 ODBC 数据源的中间层应用程序和单层应用程序。 |
用于 Oracle 的 .NET Framework 数据提供程序 | 建议用于使用 Oracle 数据源的中间层应用程序和单层应用程序。 |
EntityClient 提供程序
EntityClient 提供程序可用来基于实体数据模型 (EDM) 访问数据。 与其他 .NET Framework 数据提供程序不同,该提供程序不直接与数据源进行交互, 而是使用实体 SQL 与基础数据提供程序进行通信。 有关详细信息,请参阅 用于 Entity Framework 的 EntityClient 提供程序。