ado对象总结

对于无返回集合的命令(例如delete,update,insert),可以通过设置options中的adexecutenorecords选项提高执行速度。



recordset.open source,activeconnection,cursortype,locktype,options

source:数据源。可以是数据库中的表名,存储的查询或过程,SQL字符串,command对象或试用于提供者的其他命令对象。
activeconnection:记录集使用的连接。可以是一个连接字符串或者一个打开的connection对象。
cursortype:光标类型。缺省值为adforwardonly
locktype:锁定类型。缺省值为adlockreadonly
options:告诉提供者source参数的内容是什么,如表,文本字符串等等。(可以使用“or”或者“+”提供多个选项。)

=======(可以使用数字或者字母常量代替,但使用字母常量时需要将文件adovbs.ini包含进入asp页中)=======
cursortype的值:adOpenForwardOnly = 0,adOpenKeyset = 1,adOpenDynamic = 2,adOpenStatic = 3
locktype的值:adLockReadOnly = 1,adLockPessimistic = 2,adLockOptimistic = 3,adLockBatchOptimistic = 4
options的值:adCmdUnknown = &H0008(8),adCmdText = &H0001(1),adCmdTable = &H0002(2),
adCmdStoredProc = &H0004(4),adCmdFile = &H0100(256),adCmdTableDirect = &H0200(512),||adAsyncExecute = &H00000010(16),adAsyncFetch = &H00000020(32),adAsyncFetchNonBlocking = &H00000040(64),adExecuteNoRecords = &H00000080(128)

=======================================参数解说===============================
AdOpenForwardOnly 仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。
AdOpenKeyset 键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。
AdOpenDynamic 动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。
AdOpenStatic 静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。
对于该 CursorType 的某Recordset 对于所有这些常量, Supports 方法必须返回 True
AdOpenForwardOnly(0) 无
AdOpenKeyset(1) AdBookmark、adHoldRecords、adMovePrevious、adResync
AdOpenDynamic(2) adMovePrevious
AdOpenStatic(3) adBookmark, adHoldRecords, adMovePrevious, adResync


adLockReadOnly(1) 默认值,只读。无法更改数据。
adLockPessimistic(2) 保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。
adLockOptimistic(3) 开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用 Update 方法时锁定记录。
adLockBatchOptimistic(4) 开放式批更新。用于与立即更新模式相反的批更新模式。

==============================================================================


connection.Execute commandtext,recordsaffected,options

commandtext:执行的命令文本。与recordset的open方法中的source参数相同。也能代表一个现有的command对象。
recordsaffected:受命令执行影响的记录数
options:命令选项,可以是一个或多个commandtypeenum或executeoptionenum常数,详细见recordset设置。

注意:使用connection.execute方法返回记录集时,只能等到只读向前的记录集合。这是connection.execute方法与recordset.open方法的区别,后者可以改变记录集的类型。connection.execute也以执行更新,插入或删除操作。

================
recordsaffected的使用:一个变量,该变量用于获取受影响的记录数。

EG:connection.execute strSQL,lngRecs,adCmdText+adExecuteNoRecords(最后的参数说明执行的是文本命令并且不返回任何记录,使用此参数可以提高ado的运行速度。)




command对象使用方法

set cmd=Server.CreateObject("adodb.command")
cmd.commandtext=strSQL //设置要执行的命令,command对象只能在这里设置命令,不能在execute中设置
cmd.commandtype=adCmdType//可以在这里设置,也可以在execute中设置命令类型。
set rs=cmd.execute //执行命令

Execute方法的一些可选参数
recordsaffected:受命令影响的记录数
parameters:参数值数组,EG:Array(para1,para2,para3......)
options:与上面的两个对象说明一样。

注意:command对象返回的记录集也是只读,向前的。但可以通过recordset执行command对象获得对记录集的改变。EG:
cmd.activeconnection=connection
cmd.commandtext=strsql
cmd.commandtype=adcmdtype

rs.open cmd,,adopentype,adlocktype(由于已设置了command的连接,可以忽略recordset的连接)

==========
parameter说明

set para=command.createparameter(name,[type],[direction],[size],[value])
name:参数名
type:参数类型
direction:参数方向
size:参数长度,对于固定长度的类型,比如整型,可以忽略该值。
value:参数的值

=========
type的取值:adEmpty = 0, adTinyInt = 16, adSmallInt = 2, adInteger = 3, adBigInt = 20, adUnsignedTinyInt = 17,adUnsignedSmallInt = 18, adUnsignedInt = 19, adUnsignedBigInt = 21, adSingle = 4, adDouble = 5, adCurrency = 6,adDecimal = 14, adNumeric = 131, adBoolean = 11, adError = 10, adUserDefined = 132, adVariant = 12, adIDispatch = 9,adIUnknown = 13, adGUID = 72, adDate = 7, adDBDate = 133, adDBTime = 134, adDBTimeStamp = 135, adBSTR = 8, adChar = 129, adVarChar = 200, adLongVarChar = 201, adWChar = 130, adVarWChar = 202, adLongVarWChar = 203, adBinary = 128,adVarBinary = 204, adLongVarBinary = 205, adChapter = 136, adFileTime = 64, adPropVariant = 138, adVarNumeric = 139,adArray = &H2000


direction的取值:adParamUnknown = &H0000(0),adParamInput = &H0001(1),adParamOutput = &H0002(2),adParamInputOutput = &H0003(3),adParamReturnValue = &H0004(4)

注意:存储过程的返回值必须申明为parameters集合中的第一个参数,同时参数的direction值必须为adparamreturnvalue(4)。在创建参数的时候也可以不用设置参数的细节,只需要调用command.parameters.refresh方法,就能让ado完成更新,但执行速度变慢,因为ado必须向数据提供者获得存储过程的参数细节,而且refresh方法要在设置参数的值的前面执行,然后才设置参数的值。

加支付宝好友偷能量挖...


原创文章,转载请注明出处:ado对象总结

评论(0)Web开发网
阅读(79)喜欢(0)Asp/VBScript