成长空间

MiLife

常用链接

统计

积分与排名

Automation Testing Development

最新评论

ADO and ADO.net

ADO是什么,它是如何操作数据库的?

  答:ADO的全名是ActiveX Data Object(ActiveX数据对象),是一组优化的访问数据库的专用对象集,它为ASP提供了完整的站点数据库解决方案,它作用在服务器端,提供含有数据库信息的主页内容,通过执行SQL命令,让用户在浏览器画面中输入,更新和删除站点数据库的信息。

  ADO主要包括Connection,Recordset和Command三个对象, 它们的主要功能如下:

  ·Connection对象:负责打开或连接数据库文件;
  ·Recordset对象:存取数据库的内容;
  ·Command对象:对数据库下达行动查询指令,以及执行SQL Server的存储过程。

使用Recordset对象和Command对象来访问数据库的区别在哪里?

  答:Recordset对象会要求数据库传送所有的数据,那么数据量很大的时候就会造成网络的阻塞和数据库服务器的负荷过重,因此整体的执行效率会降低。
利用Command对象直接调用SQL语句,所执行的操作是在数据库服务器中进行的,显然会有很高的执行效率。特别是在服务器端执行创建完成的存储过程,可以降低网络流量,另外,由于事先进行了语法分析,可以提高整体的执行效率。


什么是ADO.NET架构

如今大部分的应用程序都需要后台的数据库来为其提供大量的数据来源,而应用程序与数据库之间的交流称为数据访问。而ASP.NET则使用ADO.NETActive X Data Object)作为数据的访问与操作的协议,从而使得我们可以在Internet上操作这些数据。

ADO.NET的数据访问分为两大部分:数据集(DataSet)与数据提供源(Data Provider,我并不清楚中文该怎么翻译,就叫它数据提供源好了,不要和“数据源”—Data Source搞混)

 

数据集:

数据集是一个非在线,完全由内存表示的一系列数据,可以被看作一份本地磁盘数据库中部分数据的拷贝。数据集完全驻留内存,可以被独立于数据库地访问或者修改。当数据集的修改完成后,更改可以被再次写入数据库,从而保留我们所做过的更改。数据集中的数据可以由任何数据源(Data Source)提供,比如SQL Server或者Oracle

 

数据提供源:

数据提供源用于提供并维护应用程序与数据库之间的连接。

数据提供源是一系列为了提供更有效率的访问而协同工作的组件。如今微软在ADO.NET中提供了两组数据提供源,一组叫做SQL Data ProviderSQL数据提供源),用于提供应用程序与SQL Server 7.0或者更高版本的访问。另一组叫做OleDb DataProviderObject Linking and Embedding DataBase DataProvider),可以允许我们访问例如Oracle 之类的第三方数据源。

每组数据提供源中都包含了如下四个对象:

Connect对象提供了对数据库的连接。

Command对象可以用来执行命令。

DataReader对象提供了只读的数据记录集。

DataAdapter对象提供了对数据集更新或者修改的操作。

 

总体来说,使用ADO.NET访问数据可以被概括为以下步骤:

首先应用程序创建一个Connect对象用来建立与数据库之间的连接。然后Command对象提供了执行命令的接口,可以对数据库执行相应的命令。当命令执行后数据库返回了大于零个数据时,DataReader会被返回从而提供对返回的结果集的数据访问。或者,DataAdapter可以被用来填充数据集,然后数据库可以由Command对象或者DataAdapter对象进行相应的更改。

具体来看数据提供源的四种对象

 

Connect 对象

Connect对象用来提供对数据库的连接,Microsoft Visual Studio .Net中微软提供了两种Connect对象,分别为SqlConnection对象,用来提供对SQL Server 7.0或更高版本的连接,同时还有OleDbConnection对象,用来提供对Access与其他第三方数据库的连接。

 

Command 对象

同样,Command对象分为两组,SqlCommandOleDbCommandCommand对象被用来执行针对数据库的命令,比如执行数据库的存储过程(Stored Procedure)SQL命令,或者直接返回一个完整的表。Command对象提供三种方法(Methods)用来执行上述操作。

ExecuteNonQuery用来执行一个不需返回数据的命令,比如表的插入,更新或者删除操作。

ExecuteScalar返回从一个查询得到的单独的值。

ExecuteReader用来返回一个从DataReader来的结果集。

 

DataReader对象

DataReader提供了forward-only, read-only, connected stream的结果集。

这里的forward-only表示数据只能够向前,如果我们访问了一条数据后想要再次访问这条数据就必须重新开始。

Read-only表示只读,不能够对结果集进行操作。

Connected stream表示DataReader对象是面向流连接的。所谓的流可以把它看作是管道,这边放进去东西那边就可以得到,实际上TCP协议就是面向连接的流协议。

不同于其他的三种对象,DataReader不能够被用户直接创建,必须也只能由ExecuteReader返回。

SqlCommand.ExecuteReader返回SqlDataReader

同理,OleDbCommand.ExecuteReader返回OleDbDataReader

需要注意的是,DataReader对应用程序提供行级访问(每次只能访问数据的一行),当你需要多行的时候就需要多次的访问这个对象。这样做的好处就是内存中永远只需要保留一行的数据,缺点就是每次访问都要开启Connect的连接。

 

DataAdapter对象

DataAdapter对象是ADO.NET数据访问的核心。实际上它是数据集与数据库的中间层。DataAdapter可以使用Fill方法来为DataTable或者DataSet填充数据。然后当内存操作完成后DataAdapter可以确认之前的操作从而对真正存于数据库上的数据进行修改。

DataAdapter包含四种属性用来代表不同的数据库命令:

SelectCommand用来查询数据

InsertCommand用来插入数据

DeleteCommand用来删除数据

UpdateCommand用来更新数据Update方法被调用后,数据集中的数据被更改然后拷贝回数据库,紧接着使用InsertCommand, DeleteCommand, UpdateCommand中合适一个来进行数据更新。

posted on 2007-07-25 16:46 Picasso 阅读(262) 评论(0)  编辑  收藏 所属分类: .Net


只有注册用户登录后才能发表评论。


网站导航: