ado.net 的特色
ado(activex data object)对象是继odbc(open database connectivity,开放数据库连接架构。微软所制定的架构,可以让透过这种架构和数据库连结。)之后微软主推存取数据的最新技术,ado对象是程序开发平台用来和ole db沟通的媒介,ado目前的最新版本为ado.net。ado.net 不像以前的ado 版本是站在为了存取数据库的观点而设计的,ado.net 是为了因应广泛的数据控制而设计,所以使用起来比以前的ado 更灵活有弹性,也提供了更多的功能。ado.net 的出现并不是要来取代ado,而是要提供更有效率的数据存取。微软透过最新的.net 技术提供了可以满足众多需求的架构,这个架构就是.net 共享对象类别库。这个共享对象类别库不但涵盖了windows api(windows application programming interface,windows应用程序设计界面。提供许多撰写windows 程序所需要使用的对象以及基本函式等。)的所有功能,并且还提供更多的功能及技术;另外它还将以前放在不同com 组件上,我们常常使用的对象及功能一并含括进来。除此之外ado.net 还将xml 整合进来,这样一来数据的交换就变的非常轻松容易了。所以ado.net 的架构及新功能是为了能满足广泛的数据交换需求所产生出来的新技术,这个就是ado.net。
ado.net 架构
ado.net 对象可以让我们快速简单的来存取各种数据。传统的主从式应用程序在执行时,都会保持和数据源的联机。但是在某些状况下和数据库一直保持联机是不需要的,而且一直保持和数据源的联机会浪费系统资源。有些时候我们只需要很单纯的将数据取回,这时候就不需要保持对数据源的联机。ado.net 被设计成对于数据处理不一直保持联机的架构,应用程序只有在要取得数据或是更新数据的时候才对数据源进行联机的工作,所以应用程序所要管理的连结减少;数据源就不用一直和应用程序保持联机,负载减轻了效能自然也就提升。不过我们的应用程序也有些情况需要和数据源一直保持联机,例如在线订位系统;此时我们还是可以使用ado 对象和数据源随时保持联机的状态。
ado.net 对象模型
ado.net 对象模型中有五个主要的组件,分别是connection 对象、command 对象、datasetcommand、dataset 以及datareader。这些组件中负
责建立联机和数据操作的部分我们称为数据操作组件(managed providers) ,分别由connection 对象、command 对象、datasetcommand 对象以及datareader 对象所组成。数据操作组件最主要是当作dataset 对象以及数据源之间的桥梁,负责将数据源中的数据取出后植入dataset 对象中,以及将数据存回数据源的工作。下图是显示这些对象关系的ado.net 对象模型:
connection 物件
connection 对象主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。这个物件在ado.net 的最底层,我们可以自己产生这个对象,或是由其它的对象自动产生。
command 物件
command 对象主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。这个对象是架构在connection 对象上,也就是command 对象是透过连结到数据源的connection 对象来下命令的;所以connection连结到哪个数据库,command 对象的命令就下到哪里。
datasetcommand 物件
datasetcommand 对象主要是在数据源以及dataset 之间执行数据传输的工作,它可以透过command 对象下达命令后,并将取得的数据放入dataset 对象中。这个对象是架构在command对象上,并提供了许多配合dataset 使用的功能。在beta 2 版中datasetcommand 物件会更名为dataadapter。
dataset 物件
dataset 这个对象可以视为一个暂存区(cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来。dataset 的能力不只是可以储存多个table 而已,还可以透过datasetcommand 对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。dataset 对象可以说是ado.net 中重量级的对象,这个对象架构在datasetcommand 对象上,本身
不具备和数据源沟通的能力;也就是说我们是将datasetcommand 对象当做dataset 对象以及数据源间传输数据的桥梁。
datareader 物件
当我们只需要循序的读取数据而不需要其它操作时,可以使用datareader 对象。datareader对象只是一次一笔向下循序的读取数据源中的数据,而且这些数据是只读的,并不允许作其它的操作。因为datareader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。使用datareader 对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。