微软的ado 是一组可以访问数据源的com对象,是mdac的一部分,提供了程序语言和ole db之间的中级层,这个意味着访问存储的数据,提供了统一的方式。ado允许程序员不知道数据库知识的情况下可以轻松访问数据库。而你只要知道你是如何连接数据库的就行了。你完全可以不懂sql语言就可以用ado来实现数据访问。虽然也能用ado来执行数据查询语句。直接用sql语句查询不方便的地方是对于不同的数据库是不同的方式的。
而且ado比较成功的一点是可以比较方便得去访问数据库。包括rdo和dao.ado,它在1996年的10月发布的。
ado由四个集合和12个对象组成
ado集合:
field这个集合保护一组field集合对象。这个集合被用在recordset对象和record对象上。在recordset对象上,每个field对象由很多field对象组成,相当于很多column组成。
在record对象上,一个field对象可能是指向树状结构的命名空间的绝对或者相对的url,或者作为和record对象默认的相关流(stream)对象的一种引用。
属性(properties):
有一个对象能有很多的属性对象,这些都包含在对象的属性集合里。
参数(parameters):一个命令(command)对象有许多参数命令去改变预先定义的行为。每个参数对象包含在命令对象的参数集合里。
错误集合(error)
所有可以生成错误的对象都可以被传递错误对象。然而错误对象本身也包含了一个连接对象。当ado操作生成一个错误的时候,一个原来的错误集合被清除,
而且创建新的一组对象在这个错误集合里。
ado对象:
连接对象(connection)
ado连接是通过ole db ,这个连接对象可以存储连接信息和会话和提供连接到数据库的方法。许多数据库有不同的连接建立方法,许多方法也不支持用ole db。
一个连接对象用connection连接字符串来指定不同的key,然后用open方法来连接到数据库,比如:"Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';"这个连接字符串必须请求不同的连接对象:
一个ole db提供者:用语法"provider=";
一个文件名用"file name=";
一个远程的提供者和服务器,用"remote provider=" 和"remote server=";或者。。。
一个绝对的url用"url=";
command对象:
当用connection对象连接了数据源后,就可以用command对象向数据提供者发去指令。可以直接用 commandText属性访问数据库。通过参数请求,或者通过参数对象或者参数集合或者运行一个查询和返回结果通过执行特定的方法。许多另外的方法也能用在command对象上,和另外相关的对象,比如stream,recordset,connection对象。
recordset对象:
一个recordset对象是由一组records对象组成的,也能来自基础表或者从表中查询的结果。这个recordset对象包含一个field集合和properties(属性)集合。这个field集合是一组field对象组成。这个相当于在表中的一些列。这个属性集合当然正如你想到的那样也是有属性对象组成的。为ole db一个特别的功能。这个recordset由许多方法和属性来检测数据是否存在。记录在recordset里也能随着改变而改变,做到时时更新。然后可以调用update或者updatebatch方法。增加新记录的命令addnew函数被执行然后调用update或者updatebatch方法。记录也能被删除在recordset里,然后也可以调用update方法。然后,却有许多理由删除不能存在,因为这个不遵守参照的不完整性,调用update方法后,recordset还是停在编辑模式。程序员呢。必须用cancelupdate去取消update.另外 ado可以回滚处理。也可以进行取消批更新(batch updates).recordset也能用3种方式来更新。:通过执行一个立即更新(immediate update)。通过批更新(batch update)。通过事务(transactions)的作用。
immediate:
这个recordset可以用adlockoptimistic或者adlockpessimistic锁来锁定。当用update方法来改变记录的时候,这个数据也被更新到记录原。
batch:
recordset 可以用adlockoptimistic来锁定和任何时候都可以更新数据到临时存储区。
最后可以用updatebatch完整更新到数据原中。这个利用了内存的优点。当然有问题产生的时候可以掉用updatecancel就可以,那么数据也不能更新到数据原里去。
事务对象(transaction)
如果ole db允许使用它,那么可以用它。为了开始用事务对象,程序员必须先调用begintrans方法,和做一个update请求。当他们所有都做好的时候,程序员调用committrans
方法。rollbacktrans能取消任何改变,回滚到事务对像调用之前的状态。
record(记录对象)
这个对象代表一个记录在数据库里和包含一个数据域集。一个recordset可以由许多record对象组成的。
stream
一个流。主要用在recordset对象里。可以用来读和写字节流。他的大多是作用是在xml格式里保存为recordset。然后发送命令到ole db支持的命令文本对象和包含的二进制内容或者文本文件。
parameter
一个参数可以修改一个功能的执行逻辑步骤。比如存储过程可能有不同的参数传过它,这取决于它用来做什么。这个叫做参数命令。
field:
每个记录包括了许多的域,一个recordset对象也有相关的field对象。recordset对象的field对象是一个数据库表里的一个列罢了。
property:
这个对象是ole db支持的一个特性和定义了支持的一个能力。一个属性对象能是内建属性对象,他是ado已经定义好的,却是不能被改变的。也可能是动态的属性。
定义了属性,但是在运行中能够改变的。
error:
当在用ado的时候。一个ole db支持错误出现的时候,在一个错误集合中错误对象被创建。另外的错误不能加入进错误对象,然而实际中,字recordset或者field对象储存内存操作数据的时候任何错误都有可能出现。
ado创建的一般过程:
1.创建连接(connect)对象连接到数据库
2.创建recordset 对象为了接受数据
3.打开连接
4.构造recordset打开它,传递指定的table 名字和带参数的sql语句,调用函数
5.处理取得的查询/处理数据
6.用update 或者updatebatch方法来提交改变
7.关闭recordset对象
8.关闭connection对象
完。。。。