什么叫ADO.NETADO.NET是.NETFrameWorkSDK提供给.NET开发语言进行数据库开发的一个系列类库的集合。它可以有效地从数据操作中将数据访问分解为多个可以单独使用或前后使用的不连续组件。ADO.NET的组成微软设计ADO.NET组件的目的是为了从数据操作中分解出数据访问。完成此任务的是ADO.NET的两个核心组件。.NET数据提供程序的在ADO.NET中的分类图*.NET数据提供程序:实现数据操作和对数据的快速读写访问。*DataSet数据集:在内存中的、有着丰富功能的数据缓冲区,是一个记录集的集合。在VisualC#2005中,.NET数据提供程序有以下5种:*MicrosoftOLEDB数据提供程序。*MicrosoftODBC数据提供程序。*MicrosoftSQLServer数据提供程序。*Oracle数据提供程序。*其他数据提供程序。而每种.NET数据提供程序都包含了以下4种对象。*Connection对象:提供与数据源的连接。*DataAdapter对象:提供连接DataSet对象和数据源的桥梁。*Command对象:提供对数据库命令的访问,这些命令可用于返回数据、修改数据、运行存储过程、发送或检索参数信息。*DataReader对象:从数据源中提供高性能的数据流。DataSet数据集是ADO.NET的断开式结构的核心组件,它在与数据源断开的缓存中存储数据,从而实现了独立于任何数据源的数据访问。因此,它可以用于多种不同的数据源,包括XML数据源、远程的或本地的数据库。DataSet包含一个或多个DataTable对象的集合,每个DataTable对象包含DataRow对象、DataColumn对象和Constraint对象,分别存放数据表的行信息、列信息及约束信息。此外DataSet对象还包含DataRelation对象,用于表示表间关系。它们的关系如图14-1所示。图14-1.NET数据提供程序和DataSet数据集结构图ADO.NET连接数据库的过程当应用程序需要连接数据库时,首先需要用Connection对象连接数据库,然后用Command对象对数据库进行操作,Command对象的执行结果可以被DataReader对象读取,也可以被DataAdapter对象用来填充DataSet对象。当DataReader读取时,只读一条数据,而DataAdapter对象则把所有数据填充给DataSet。因此DataAdapter对象是DataSet对象与数据库的桥梁。这个过程可以用图14-2表示。图14-2ADO.NET的结构图ADO.NET的命名空间System.Data命名空间System.Data命名空间的核心内容是DataSet对象及相关的类,如表6-4所示。System.Data命名空间的主要类对象名称对象功能DataSet数据在内存中的缓存DataTable内存中的数据表DataTableCollection内存中的DataTable集合DataView内存中某个DataTable的视图DataRowDataTable中的某行数据DataRowCollectionDataTable中行的集合DataRowViewDataRow的视图DataColumnDataTable的列结构DataColumnCollection某个DataTable对象的DataColumn集合DataRelation两个DataTable之间的关系DataRelationCollectionDataSet中所有的DataRelation对象的集合ConstraintDataColumn对象上的约束ConstraintCollection某个DataTable上所有的Constraint对象的集合DataTableReader以一个或多个只读、只进结果集的形式获取N个DataTable对象的内容DataException使用ADO.NET时发生的意外System.Data.Common命名空间System.Data.Common命名空间的核心内容是各种.NETFramework数据提供程序共享的类,如表6-5所示。System.Data.Common命名空间的主要类对象名称对象功能DataAdapter一组SQL命令和一个数据库连接,用于填充DataSet和更新数据源DbCommand表示要对数据源执行的SQL语句或存储过程DbConnection表示到数据库的连接DbDataAdapter继承DataAdapter的大部分功能DbDataReader从数据源返回只读的、向前的数据DbException数据源引发的异常DbParameter为DbCommand对象设置参数DbTransaction事务System.Data.Odbc命名空间System.Data.Odbc命名空间的核心内容是基于ODBC接口可以访问的数据源的数据提供程序。目前主流的关系型数据库、文本文件、Excel电子表格文件等都支持ODBC接口。命名空间的主要内容如表6-6所示。System.Data.Odbc命名空间的主要类对象名称对象功能OdbcCommand对数据源执行的SQL语句或存储过程OdbcConnection连接数据源OdbcDataAdapter数据命令集和到数据源的连接,它们用于填充DataSet以及更新该数据源OdbcDataReader从数据源提取只读、向前的数据OdbcError从数据源返回的错误或者警告信息OdbcException数据源引发的异常OdbcParameter设置OdbcCommand对象的参数OdbcTransaction设置事务System.Data.OleDb命名空间System.Data.OleDb命名空间的核心内容是基于OLEDB接口可以访问的数据源的数据提供程序。命名空间的主要内容如表6-7所示。System.Data.OleDb命名空间的主要类对象名称对象功能OleDbCommand对数据源执行的SQL语句或存储过程OleDbConnection连接数据源OleDbDataAdapter数据命令集和到数据源的连接,它们用于填充DataSet以及更新该数据源OleDbDataReader从数据源提取只读、向前的数据OleDbError从数据源返回的错误或者警告信息OleDbException数据源引发的异常对象名称对象功能OleDbParameter设置OleDbCommand对象的参数OleDbTransaction设置事务System.Data.OracleClient命名空间System.Data.OracleClient命名空间的核心内容是专为Oracle数据库设计的数据提供程序。命名空间的主要内容如表6-8所示。System.Data.OracleClient命名空间的主要类对象名称对象功能OracleCommand对数据源执行的SQL语句或存储过程OracleConnection连接数据源OracleDataAdapter数据命令集和到数据源的连接,它们用于填充DataSet以及更新该数据源OracleDataReader从数据源提取只读、向前的数据OracleError从数据源返回的错误或者警告信息OracleException数据源引发的异常OracleParameter设置OracleCommand对象的参数OracleTransaction设置事务System.Data.SqlClient命名空间System.Data.SqlClient命名空间的核心内容是专为SQLServer数据库设计的数据提供程序。命名空间的主要内容如表6-9所示。System.Data.SqlClient命名空间的主要类对象名称对象功能SqlCommand对数据源执行的SQL语句或存储过程SqlConnection连接数据源SqlDataAdapter数据命令集和到数据源的连接,它们用于填充DataSet,以及更新该数据源SqlDataReader从数据源提取只读、向前的数据SqlError从数据源返回的错误或者警告信息SqlException数据源引发的异常SqlParameter设置SqlCommand对象的参数SqlTransaction设置事务System.Data.SqlServerCe命名空间System.Data.SqlServerCe命名空间的核心内容是ADO.NET2.0中专为SQLServerMobile数据库设计的数据提供程序。命名空间的主要内容如表6-10所示。System.Data.SqlServerCe命名空间的主要类对象名称对象功能SqlCeCommand对数据源执行的SQLCE语句或存储过程SqlCeConnection连接数据源SqlCeDataAdapter数据命令集和到数据源的连接,它们用于填充DataSet,以及更新该数据源SqlCeDataReader从数据源提取只读、向前的数据SqlCeError从数据源返回的错误或者警告信息SqlCeException数据源引发的异常SqlCeParameter设置SqlCeCommand对象的参数SqlCeTransaction设置事务显示了ADO.NET命名空间的结构。图14-3ADO.NET命名空间的结构ADO.NET中的类ADO.NET中的类很多,从一次数据库访问过程看,一般需要4个或5个类,它们的顺序如图14-4所示。图14-4数据库访问中类的顺序在使用这些类时,除了基础类DataSet外,其他类的数据提供程序要一致,如SQLConnection、SQLCommand、SQLDataReader是一致的,OLEDbConnection、OLEDbCommand、OLEDbDataAdapter是一致的。如何使用ADO.NETADO.NET处理数据库数据一般需要4个步骤。1.使用Connection连接数据库ADO.NET处理数据库数据的第一步是连接到数据库,只有先连接上数据库才能进行后续操作。该步骤用到Connection对象,该对象负责建立和控制用户应用程序与数据库之间的连接。一个Connection对象表示到数据源的一个唯一的连接,在客户端-服务器(即C/S)数据库系统中,它等效与一个到服务器的网络连接。所有的连接都要用到连接字符串ConnectionString,该字符串是使用分号隔开的多项信息,其内容随着数据库类型和访问内容的变化而变化。不同的数据库有着不同内容的连接字符串,下面就列举两种常用数据库的连接字符串:Access和SQLServer。1)Access数据库连接字符串在连接Access数据库时,Provider和DataSource是必须要设置的参数,其他参数可以根据情况省略。SQLServer数据库连接字符串:使用Connection对象连接数据库的方法一般如下(SQLServer数据库):2.执行数据库命令执行数据库命令由Command对象完成,它的任务就是执行SQL语句,然后把执行的结果传给下一级对象:DataAdapter或DataReader对象。它有3种执行方式:ExecuteNonQuery、ExecuteReader、ExecuteScalar。在定义Command对象时,一般要有Connection对象支持,基本用法如下:3.读取数据Command对象执行后,由数据读取对象DataReader和数据匹配对象DataAdapter接收数据,DataReader对象里的数据可以直接为应用程序使用,而DataAdapter对象则建立和初始化数据表,然后填充给DataSet对象为应用程序使用。Command对象通过执行ExecuteReader方法就可将数据传给DataReader对象,这在上一步骤的例子中已经说明,如下:Command对象将数据传给DataAdapter对象的方法是要通过DataAdapter对象的SelectCommand、DeleteCommand