VC++ ADO开发实践之七[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 zswzwy 的 blog

    g.提供事务机制,通过begintrans、committrans和rollbacktran
s方法实现事务控制。
    h.通过errors集合属性检查数据源的错误信息。
    i.通过openschema方法获取数据库的表信息。
    connection对象是ado的基本对象之一,它独立于所有其他的对象
。如果我们要对数据库进行查询操作,既可以使用execute方法,也可
以使用command对象。使用execute方法比较简便,但用command对象可
以保存命令的信息,以便多次查询。
    (2) command对象 command对象代表一个命令,可以通过其方法执
行针对数据源的有关操作,比如查询、修改等。command对象的用法如
下:
    a.通过commandtext属性设置命令串。
    b.通过parameters集合属性和parameter对象定义参数化查询或
存储过程的参数。
    c.通过execute方法执行命令,可能的话,返回recordset对象。
    d.在执行命令之前,可通过设置commandtype属性以便优化性能。
    e.可以通过prepared属性指示底层的提供者为当前命令准备一个
编译过的版本,以后再执行时,速度会大大加快。
    f.通过commandtimeout属性设置命令执行的超时值(以秒为单位)

    g.可以设置activeconnection属性,为命令指定连接串,command
对象将在内部创建c onnection对象。
    h.可以设置name属性,这样以后可以在相应的connection对象上
按name属性指定的方法名执行。
    command对象执行时,既可以通过activeconnection属性指定相连
的connection对象,也可以独立于connection对象,直接指定连接串,
即使连接串与connection对象的连接串相同,command对象仍然使用其
内部的数据源连接。
(3)recordset对象 recordset对象代表一个表的记录集或者命令
执行的结果,在记录集中,总是有一个当前的记录。记录集是ado管理
数据的基本对象,所有的recordset对象都按照行列方式的表状结构进
行管理,每一行对应一个记录(record),每一列对应一个域(field)。
recordset对象也通过游标对记录进行访问,在ado中,游标分为以下4种
:
    静态游标提供对数据集的一个静态拷贝,允许各种移动操作,包括
前移、后移等等,但其他用户所做的操作反映不出来。
    动态游标允许各种移动操作,包括前移、后移等等,并且其他用户
所做的操作也可以直接反映出来。
    前向游标允许各种前向移动操作,不能向后移动,并且其他用户所
做的操作也可以直接反映出来。
    键集(keyset)游标 类似于动态游标,也能够看到其他用户所做的
数据修改,但不能看到其他用户新加的记录,也不能访问其他用户删除
的记录。
    recordset对象的用法如下:
    a.利用cursortype属性设置游标类型。
    b.通过open方法打开记录集数据,既可以在open之前对activecon
nection属性赋值, 指定recordset对象使用连接对象,也可以直接在o
pen方法中指定连接串参数,ado将创建一个内部连接,即使连接串与外
部的连接对象相同,它也使用新的连接对象。
    c.recordset对象刚打开时,当前记录被定位在首条记录,并且bof
和eof标志属性为f alse,如果当前记录集为空记录集,则bof和eof标
志属性为true。
    d.通过movefirst、movelast、movenext和moveprevious方法可
以对记录集的游标进行移动操作。如果ole db提供者支持相关功能的
话,可以使用absoluteposition、absol utepage和filter属性对当前
记录重新定位。
    e.ado提供了两种记录修改方式:立即修改和批修改。在立即修改
方式下,一旦调用u pdate方法,则所有对数据的修改立即被写到底层
的数据源。在批修改方式下,可以对多条记录进行修改,然后调用upda
tebatch方法把所有的修改递交到底层数据源。递交之后,可以用stat
us属性检查数据冲突。
    recordset对象是ado数据操作的核心,它既可以作为connection
对象或command对象执行特定方法的结果数据集,也可以独立于这两个
对象而使用,由此可以看出ado对象在使用上的灵活性。
    上面3个对象都包含一个property对象集合的属性,通过property
对象可使ado动态暴露出底层ole db提供者的性能。由于并不是所有
的底层提供者都有同样的性能,所以ado 允许用户动态访问底层提供
者的能力。这样既使得ado很灵活,又提供了很好的扩展性。
    ado的其他集合对象及其元素对象,都用在特定的上下文环境中,
比如parameter对象一定要与某个command对象相联系后,才能真正起
作用。而另外三个对象field、error和property对象只能依附于其父
对象,不能单独创建这些对象。
    三、在多种语言中使用ado
    以上介绍了ado的对象模型,现在我们来讨论如何在不同的语言环
境中使用ado对象。
    因为ado是作为自动化组件程序实现的,所以我们可以在任何支持
com和自动化特性的语言环境中使用ado,比如visual basic、visual
c++、asp和java等等,下面分别加以介绍。
    1. 在visual basic应用中使用ado
    visual basic应用在设计模式和运行模式下都可以创建和使用自
动化对象,在设计模式下,像ado这样的对象库可以作为内部对象来使
用,我们只需在"project"菜单下的"ref erences"命令弹出的对话框
中选中ado对象库"microsoft activex data objects libra ry",于
是我们就可以在程序中直接声明或新建ado对象,举例如下:
    dim cn as new adodb.connection
    dim cmd as new adodb.command
    dim rs as new adodb.recordset
    可以看出,在设计时使用ado对象非常方便,而且visual basic设
计环境中提供的对象浏览器(object browser)功能允许用户很方便地
查看ado对象的属性和方法。
    我们也可以在运行时创建自动化对象,使用visual basic的creat
eobject函数可以创建任意的自动化对象,由于ado中只有connection
对象、command对象和recordset对象可以被独立创建,所以我们也只
能创建这3种对象,举例如下:
    dim cn
    set rs=createobject("adodb.connection ")
    dim cmd
    set rs=createobject("adodb.command")
    dim rs
    set rs=createobject("adodb.recordset")
    不管是设计模式还是运行模式,调用ado对象的属性和方法都非常
简单,直接调用即可。
    2. 在asp的vbscript中使用ado
    ado对象也可以用于html和active server page的vbscript脚本
代码,vbscript脚本代码与visual basic的代码很类似,它们内嵌在ht
ml或asp文件的特定标记对内部。但vb script引擎比visual basic的
设计环境或运行库在功能上还是要弱一些,首先,在vbscri pt代码中,
没有与设计环境类似的用法,vbscript引擎不能装入ado类型库,所以
不能使用new操作符创建ado对象,但可以使用createobject函数创建
对象;其次,ado对象库中用到的常量只能通过包含文件引入,随ado一
起提供的adovbs.inc文件包含所有ado常量的定义,我们可在脚本代码
中直接包含此文件。
    因此,为了在vbscript代码中使用ado,首先要包含adovbs.inc文
件,然后使用create object函数创建ado对象,以后就可以调用这些对
象的属性或方法了。下面的例子显示了在asp文件中用ado列出数据表
中所有作者的姓名和职称,代码如下:
    using ado in a visual basic script web page
    using ado in a visual basic script
    web page
    myconnection.open "dsn=mysamples;uid=sa"

本文关键:ADO
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top