4-1-4 ADO.NET连接数据库管理系统
1.ADO.NET连接数据库的类型及方法
ADO.NET连接数据库的内容包括:连接到数据库、执行数据库操纵命令和检索结果。可以直接处理检索到的结果,也可以将其放入DataSet对象,方便与来自多个源的数据和在层之间进行远程处理的数据组合在一起,以特殊方式向用户公开。.NET Framework数据提供程序是轻量的,它在数据源和代码之间创建了一个最小层,以便在不以功能为代价的前提下提高性能。数据提供程序的在ADO.NET中分类如图4-11所示:
图4-11 .NET数据提供程序的在ADO.NET中的分类图
ADO.NET操控数据库的主要对象包括:Connection对象,Command对象,DataReader对象,DataAdapter对象。表4-1概括了组成 .NET Framework 数据提供程序的四个核心对象。
表4-1 .NET数据提供程序的四个核心对象表
对象 |
说明 |
Connection |
建立与特定数据源的连接。所有Connection对象的基类均为DbConnection类。 |
Command |
对数据源执行命令。公开Parameters,并且可以通过Connection在Transaction的范围内执行。所有Command对象的基类均为DbCommand类。 |
DataReader |
从数据源中读取只进且只读的数据流。所有DataReader对象的基类均为DbDataReader类。 |
DataAdapter |
用数据源填充DataSet并解析更新。所有DataAdapter对象的基类均为DbDataAdapter类。 |
除表4-1列出的ADO.NET核心对象之外,.NET Framework 数据提供程序还包含4-2表列出的其他重要对象。
表4-2 .NET数据提供程序的其他对象表
对象 |
说明 |
Transaction |
使您能够在数据源的事务中登记命令。所有Transaction对象的基类均为DbTransaction类。 |
CommandBuilder |
帮助器对象将自动生成DataAdapter的命令属性或将从存储过程派生参数信息并填充Command对象的Parameters集合。所有CommandBuilder对象的基类均为DbCommandBuilder类。 |
ConnectionStringBuilder |
帮助器对象为创建和管理Connection对象所使用的连接字符串的内容提供了一种简单的方法。所有ConnectionStringBuilder对象的基类均为DbConnectionStringBuilder类。 |
Exception |
在数据源中遇到错误时返回。对于在客户端遇到的错误,.NET Framework数据提供程序会引发.NET Framework异常。所有Exception对象的基类均为DbException类。 |
Error |
公开数据源返回的警告或错误中的信息。 |
ClientPermission |
为.NET Framework数据提供程序代码访问安全属性。所有ClientPermission对象的基类均为DBDataPermission类。 |
另外,.NET数据提供程序的命名空间有四类,前面提到的这些对象在每类数据提供程序的命名空间里都有一套,并且某个对象在不同的命名空间内名称是不同的。四类命名空间分别是:SQLClient、OLEDB、Oracle、ODBC,其对应的数据提供程序如表4-3所示:
表4-3 四类.NET数据提供程序表
.NET Framework 数据提供程序 |
说明 |
SQL Server .NET Framework数据提供程序 |
提供对Microsoft SQL Server 7.0版或更高版本的数据访问。使用System.Data.SqlClient命名空间。
建议用于使用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数据提供程序一起使用。 |
OLE DB .NET Framework数据提供程序 |
适合于使用OLE DB公开的数据源。使用System.Data.OleDb命名空间。
建议用于使用SQL Server 6.5或较早版本的中间层应用程序。
对于SQL Server 7.0或更高版本,建议使用SQL Server .NET Framework数据提供程序。还建议用于使用Microsoft Access数据库的单层应用程序。不建议将Access数据库用于中间层应用程序。 |
ODBC .NET Framework数据提供程序 |
适合于使用ODBC公开的数据源。使用System.Data.Odbc命名空间。
建议用于使用ODBC数据源的中间层和单层应用程序。 |
Oracle .NET Framework数据提供程序 |
适用于Oracle数据源。Oracle .NET Framework数据提供程序支持Oracle 客户端软件 8.1.7 版和更高版本,使用System.Data.OracleClient命名空间。建议用于使用Oracle数据源的中间层和单层应用程序。 |
1.ADO.NET操控数据库的工作过程
.NET数据提供程序的工作过程如图4-12所示:
图4-12 .NET数据提供程序的工作过程图
在图4-12中1,2,3步骤是从服务器检索数据的过程,A、B是对数据库修改的过程。在这个过程中1、2步和B过程都是.NET数据提供程序的工作步骤。
2.ADO.NET与MS SQL Server的关联
由于架构在.NET Framework 2.0基础之上的VS2005软件开发系统平台与SQL Server数据库管理信息系统都是出自微软公司旗下产品,所以VS2005与SQL Server的数据通信本身就已经经过了优化,可以直接访问SQL Server而不用添加OLE DB或开放式数据库连接(ODBC)层,并具有良好的性能。
以下代码示例显示如何在应用程序中包含System.Data.SqlClient命名空间。
using System.Data.SqlClient;
注意:
ODBC .NET Framework数据提供程序的结构与OLE DB .NET Framework数据提供程序的结构相似;例如,它调入ODBC服务组件。
3.ADO.NET与OLEDB的关联
OLEDB是Microsoft的一个战略性系统级编程接口,用于管理整个组织内的数据。OLEDB 是建立在ODBC功能之上的一个开放规范,主要用于访问非关系型数据库。表4-4显示已经用ADO.NET进行测试的提供程序。
表4-4 OLEDB数据提供程序所对应的数据源驱动程序表
驱动程序 |
提供程序 |
SQLOLEDB |
用于SQL Server的Microsoft OLE DB提供程序 |
MSDAORA |
用于Oracle的Microsoft OLE DB提供程序 |
Microsoft.Jet.OLEDB.4.0 |
用于Microsoft Jet的OLE DB提供程序 |
OLE DB .NET Framework数据提供程序类位于System.Data.OleDb命名空间中。以下代码示例显示如何在应用程序中包含System.Data.OleDb命名空间。
using System.Data.OleDb;
注意:
不推荐将Access (Jet)数据库用作多线程应用程序(如ASP.NET应用程序)的数据源。如果必须将Access数据库用作ASP.NET应用程序的数据源,而且不能使用其他数据库(如SQL Server或MSDE),那么请注意,连接到Access数据库的ASP.NET应用程序可能会遇到连接问题,这些问题通常与安全权限有关。
4.ADO.NET与ODBC的关联
DSN(数据源)是在odbc里设置的,用于连接数据库,ODBC只能用于关系型数据库。作为DSN的数据库连接可分为以前三种:
n 用户DSN:数据源对计算机来说是本地的,并且只能被当前用户访问,所以只有建立该数据源的用户才能访问该数据源,而且不能从网络上访问该数据源。
n 系统DSN:数据源对于计算机来说也是本地的,但并不是用户专用的,任何具有权限的用户都可以访问“系统DSN”,但是它还是不能从网络上来访问。
n 文件DSN:则与前两者不同,它们可以在所有安装了相同驱动程序的用户中共享,这些数据源对于计算机说都是本地的。也就是说可以通过网络上来访问。
表4-5显示了用ADO.NET测试的ODBC驱动程序。
表4-5 ODBC数据提供程序所对应的数据源驱动程序表
驱动程序 |
SQL Server |
Microsoft ODBC for Oracle |
Microsoft Access 驱动程序 (*.mdb) |
ODBC .NET Framework数据提供程序类位于System.Data.Odbc命名空间中。以下代码示例显示如何在您的应用程序中包含System.Data.Odbc命名空间。
using System.Data.Odbc;
5.ADO.NET与Oracle的关联
ADO.NET提供程序通过Oracle客户端连接软件启用对Oracle数据源的数据访问,该数据提供程序支持Oracle客户端软件8.1.7版或更高版本。
ADO.NET为与Oracle数据库关联提供程序类位于System.Data.OracleClient命名空间中,并包含在System.Data.OracleClient.dll程序集中。在编译使用该数据提供程序的应用程序时,需要同时引用System.Data.dll和System.Data.OracleClient.dll。
以下代码示例显示如何在您的应用程序中包含System.Data.OracleClient命名空间。
using System.Data;
using System.Data.OracleClient;