Must know something of everything and everything of something!

Recordset对象方法

上一篇 / 下一篇  2007-05-23 19:16:21 / 个人分类:DataBase

Recordset对象方法

R$o?&Y+eef!l051Testing软件测试网/Mbz7T5l4@7T%?R

Open方法

F*l8UW%?*WZ.\0

n Z M VF&U~0recordset.Open Source,ActiveConnection,CursorType,LockType,Options51Testing软件测试网 fF!D&Sg(M Dh

eU x\(p a?.|}0Source51Testing软件测试网)qc)a|]W d;k.h#m r
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。

2j z6}7[$qv#F'V051Testing软件测试网%`M WZ5e4v\-DgYh

ActiveConnection51Testing软件测试网7IV voe.dY z&R8d
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。

$fd9jM7P y}051Testing软件测试网p3Ur7zW+K(D C

CursorType
O~O"@8_uus0Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:51Testing软件测试网0wO0B V8R._H&RF7R+h
--------------------------------------------------------------
#Grv,Y_0常数 常数值 说明
fE4c0S q{3p8A1p/Y q0-------------------------------------------------------------
6NK cuw|2c`$c1Ri0adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。
Sc!D4ed%W{7?0adOpenKeyset 1 启动一个Keyset类型的游标。
AH:_ F&q9@2pr0adOpenDynamic 2 启动一个Dynamic类型的游标。51Testing软件测试网/Cjk(^&E0w {4x
adOpenStatic 3 启动一个Static类型的游标。
'{#[pfwd/Y#Ea0-------------------------------------------------------------
2\,ShG$G(c0以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。

LbDpEnYEm051Testing软件测试网 F Wn @7Qw@8MW%{

-------------------------------------------------------------51Testing软件测试网;_(\s!vrfF
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
2O.}0YJ6ofl0-------------------------------------------------------------
lB5AD9@Z"\/c^MU0AbsolutePage 不支持 不支持 可读写 可读写
1Z9` U,CPss0AbsolutePosition 不支持 不支持 可读写 可读写51Testing软件测试网~3B,R kY'M&U#i
ActiveConnection 可读写 可读写 可读写 可读写51Testing软件测试网#XD?1zC
BOF 只读 只读 只读 只读
?o9b ~p-T8bo6l y c0Bookmark 不支持 不支持 可读写 可读写
DrqGF)iWFb.f/g0CacheSize 可读写 可读写 可读写 可读写
ag W3a:g'm!p.?a s0CursorLocation 可读写 可读写 可读写 可读写
'I H7s-_vzGe |v0CursorType 可读写 可读写 可读写 可读写
0c e5T }Hq t,~0EditMode 只读 只读 只读 只读51Testing软件测试网#d"b%m5Q+C#J
EOF 只读 只读 只读 只读51Testing软件测试网;kMX w]M6E*g|g
Filter 可读写 可读写 可读写 可读写
SF9Q7nicld0LockType 可读写 可读写 可读写 可读写
'L_C }H0MarshalOptions 可读写 可读写 可读写 可读写
:JG0B4{X0MaxRecords 可读写 可读写 可读写 可读写
&~/l0a'f+[7|K"YT0PageCount 不支持 不支持 只读 只读
TeP t'l+v0PageSize 可读写 可读写 可读写 可读写51Testing软件测试网Y7S7z+SK
RecordCount 不支持 不支持 只读 只读51Testing软件测试网:GF7p#d0K!]+^[
Source 可读写 可读写 可读写 可读写51Testing软件测试网C2EA7DAidftq%M
State 只读 只读 只读 只读
x9{h9M N7D`0Status 只读 只读 只读 只读
s }/T:Xy$N0AddNew 支持 支持 支持 支持51Testing软件测试网1X q7Qz k]#n+T$q
CancelBatch 支持 支持 支持 支持51Testing软件测试网:j)y5UvVa?q
CancelUpdate 支持 支持 支持 支持
$sb6H/fC0Clone 不支持 不支持
L)\ t0mU(L(b1?[~0Close 支持 支持 支持 支持51Testing软件测试网2o)?6o/Fix(nH"m;[
Delete 支持 支持 支持 支持51Testing软件测试网?0@~-Q%s
GetRows 支持 支持 支持 支持51Testing软件测试网(_ [,|sk)V
Move 不支持 支持 支持 支持51Testing软件测试网G0|j:P(l
MoveFirst 支持 支持 支持 支持
E.A-LP+Yc~2zlhF0MoveLast 不支持 支持 支持 支持51Testing软件测试网_e0d(GTk_
MoveNext 支持 支持 支持 支持
p"f?z'S0MovePrevious 不支持 支持 支持 支持
s6}V [)I_ Vp0NextRecordset 支持 支持 支持 支持
w{ R?zpJ*f0Open 支持 支持 支持 支持51Testing软件测试网n$?@.k0J1a0? gf
Requery 支持 支持 支持 支持51Testing软件测试网Xk3o:\#c,lX
Resync 不支持 不支持 支持 支持51Testing软件测试网4a}4K*Wl8f/A W)BX
Supports 支持 支持 支持 支持
z0| j e$Zo8C0Update 支持 支持 支持 支持
wL)c3t,J$M9z0UpdateBatch 支持 支持 支持 支持
{tut*K;q$RSB0--------------------------------------------------------------51Testing软件测试网ry$p.w"kU
其中NextRecordset方法并不适用于Microsoft Access数据库。51Testing软件测试网9eJ)m%?6b5e

51Testing软件测试网-RYj@+ao$f?r,@

LockType51Testing软件测试网{T V3bA~Hg1x
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:51Testing软件测试网'Z,R0H9vU%T1ha$g XN

| bhL(^7w'Lle|0-------------------------------------------------------------
-@1|*Xn2x%V&~;^0常数 常数值 说明
w tKK$] E1nXz!A0--------------------------------------------------------------
0q6P }^ HS0adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法
:J%d eb7N0adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。
-KB4J \,] tw%j y0adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。51Testing软件测试网M)Qd_/^c M7O+D
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、51Testing软件测试网:X2N*?2v2P#^|6jhY$_
删、改的操作。
"f1`x[1yPv0ActiveConnection 设置或返回Command对象的连接信息,该属性可以是一个Connection对象或连接字符串。

9S?D)W&G%D2B0

t`A)PN t-G9p GV$y r)]051Testing软件测试网R3z.` i)RcFoo\
CommandText 设置或返回对数据源的命令串,这个串可以是SQL语句、表、储存过程或数据提供者支持的任 何特殊有效的命令文本。

,z)o5c V^^*fd0

0m-AX,M4i0
W7Z5@'^x3Xe Y0`0Prepared 提出在调用Command对象的Execute方法时,是否将查询的编译结果储存下来。如果将该属性设 为True,则会把查询结果编译并保存下来,这样针影响第一次的查询速度,但一但数据提供者编译了Command对 象,数据提供者在以后的查询中将使用编译后的版本,从而极大的提高了速度

4[TWV,~#G{U0

:CZ&E#[~8YVK051Testing软件测试网K:|5d1Wp N(k9ob/G{(}
CommandTimeout 设置执行一个Command对象时的等待时间,默认值是30秒。如果在这个时间内Command对象没 有执行完,则终止命令并产生一个错误

p M!@j)eB7RsC0

[S0H~1J Ym8E0
O-C[N ?8p4B iS}0CommandType
U4Xg.O0@wo-N I%p0指向Command对象的类型,取值如下:51Testing软件测试网'[ MKu'r,@C1k

oO-q'dk8nzd-AI01 或 adCmdText:CommandText 是一个SQL语句;51Testing软件测试网mB+p,yi}

51Testing软件测试网8h.w JY$e UV)j.o%k

2 或 adCmdTable:CommandText 是一个表名,ADO会产生一个对该表的查询,以返回该表的全部行和列。

$X"F&N!lSh051Testing软件测试网P7q8hT#a E/iy%R+et

4 或 adCmdStoredProc:CommandText 是一个储存过程名

t&F&WD0u8F"EL$s051Testing软件测试网;U8S:x9Zv%E4C}(?

8 或 adCmdUnknown:默认值。 CommandText内容是未知的51Testing软件测试网C1dTcgxM)b

\7D cl/@u0128 或 adExecuteNoRecords:CommandText 是一个不返回记录集的命令或存储过程。如果可以取记录,这些记 录将被丢弃。该值总是和adCmdText或adCmdStoredProc一起使用;51Testing软件测试网I-\-\j7S]7kP3o

51Testing软件测试网7`%b[+T l)h1h

256 或 adCmdfile:CommandText 是已存在的记录集的文件名;51Testing软件测试网C~zE!G*Y!w

51Testing软件测试网a-g%B vG.K!PO"nj`-_U

512 或 adCmdTableDirect:CommandText 是一个表,在查询中该表的全部行和列将被返回51Testing软件测试网7ln%P[+BIn$vZ5l6i'I

51Testing软件测试网M/U;V/^zqe

--------------------------------------------------------------------51Testing软件测试网f4ySqo1B6h6\'p"O

'xg NsA0Command 对象的方法

(Af ~(l6v8`%t0

PghyR{051Testing软件测试网a3\b[4P h
Cancel 取消一个未确定的异步执行的Execute方法。如果执行Execute方法时未指定adRunAsync参数,则 Cancel方法会返回一个运行时错误

(\en4f)eM%y!q'K2h051Testing软件测试网!_&G ~'Ak7]j L

51Testing软件测试网@&t9x Q7E$L T;W bu
CreateParameter 创建一个新的Parameter对象。Parameter对象表示传递给SQL语句或储存过程的一个参数51Testing软件测试网'r-C]-~2w6s].]

$A1G0X8E2i ? }(Fhk0
T6iT(f h lP"V0Execute 执行一个由CommandText属性指定的查询、SQL语句或储存过程。该方法调用所返回的记录集是仅向 前和只读的游标。如果想得到其它类型的游标或写数据,则必需一个Recordset对象并用Open方法打开记录集。

#g,[1v!?*p+\`0

}Z Boz(e'S;ns0 

!X'\&|Pj8A w u0

g{ HA,Q2^0
ed#i%\Q"c!W0-------------------------------------------------------------------
.D&Xa0c4j0Type 的属性

2EN2cXE1alK0

*V r:v}.vB*lz0
vv;W*U c$qzs/~6X0adBigInt 20 八位符号整数

3Z awd ],K$C0

;T#e.B)h0k l%}0adBinary 128 二进制值51Testing软件测试网E)?$FU#l'cr9W

51Testing软件测试网MH!H#Il3X

adBoolean 11 布尔值

q;Tib S7s^051Testing软件测试网)};{~/d)bI7F8o&d

adBSTR 8 以空值结束的Unicode字符串51Testing软件测试网6t5D(@Y0[%x~{

51Testing软件测试网3}+M!mz-D| i B1F

adChar 129 字符串值

7n zpG5EX0

6t @ZH(VK-}J"UY0adCurrency 6 货币值,8字节长

T+U],p2J%KW3G"`0

P;GN!R!zn3s s:gr0adDate 7 日期值

)A3~s`y051Testing软件测试网\{W;FpK st

adDBDate 133 日期值,格式是:yyyymmdd51Testing软件测试网V.TiLZfO#Y

51Testing软件测试网Ei-Jm0U1v_O;l

adBDTime 134 时间值,格式是:hhmmss

2D$gL"fN Y9yh o%A+M051Testing软件测试网+\8e"x cbP ey

adDBTimeStamp 135 日期时间戳,格式是:yyyymmddhhmmss51Testing软件测试网_r7`t(qn-i6@

51Testing软件测试网"i0e$O9{Px

adDecimal 14 有固定精度的数值

&A"D!VBLD p051Testing软件测试网iL/vG8\1?9a

adDouble 5 双精度浮点值

6}9|A'@C1s6S051Testing软件测试网r}"xL9X4o|V{

adEmpty 0 无指定值

1Y!~j,TcM_-JM051Testing软件测试网6W5U1{YH s If8`-^

adError 10 32位错误码51Testing软件测试网 eJo:^M6],Vx2`

lI*o9A%I0u h1I5\/B:h0adGUID 72 全局唯一指示符51Testing软件测试网O#D&}{+v?

"T*K!hRLj[/t0adIDispatch 9 指向OLE对象的接口指针51Testing软件测试网"z2b!ocr8B

51Testing软件测试网w2]yG+K6A1R*z

adInteger 3 四位符号整数

n+~] RM({051Testing软件测试网Gl~j {W _ X

adIUnknown 13 指向OLE对象的IUnknown接口指针

~ aO,E&RT"S&fZ4\051Testing软件测试网P;Nt ?G rI

adLongVarBinary 205 长整型二进制(仅用于Parameter对象)51Testing软件测试网i3fz&Ub;K5M7U#n| ^

{e+V5}!U-F|(eN0adLongVarChar 201 长字符串值(仅用于Parameter对象)51Testing软件测试网QM'V M3f;MU(}K

51Testing软件测试网W joa&yV)u8s

adLongVarWChar 203 以空值结束的长字符串值(仅用于Parameter对象)

V*dIZd$e051Testing软件测试网!I*J Dq4EC#BU;Z

adNumeric 131 有固定精度的数值

;KS.iZ/M4|_I{?k051Testing软件测试网}Yw5omzl)^L

adSingle 4 单数度浮点值51Testing软件测试网;XwPzk7t[Gf

51Testing软件测试网h;H&HUh\rK

adSmallInt 2 两位符号整数

/w)gw ~f [(e8m051Testing软件测试网g-L MwI$S)u/l7}

adTinyInt 16 一位符号整数

@$u:GCz.Di051Testing软件测试网 H4z2c;u2S*U8y)Z l i o

adUnsignedInt 21 八位无符号整数51Testing软件测试网.S3q2y6f&DL(r3P'b.N

~0RX"nBb,z:e Sx0adUnsignedSmallInt 19 四位无符号整数51Testing软件测试网)vo K{b ](@ ?.y(dA

51Testing软件测试网V@8w$q \[&\\r

adUserDefined 132 用户定义的变量51Testing软件测试网h mS0ELx S

9_z g}6ds5yck0adVarBinary 204 二进制值(仅用于Parameter对象)51Testing软件测试网1M }r$M"FK$j1e

N,K!Z(xm%O#l2X3`RMQ0adVarChar 200 字符串值(仅用于Parameter对象)51Testing软件测试网&?S'efO/_

3S:Zay+U$Cm$V051Testing软件测试网Tj,EUtxjt
----------------------------------------------------------51Testing软件测试网2w w&iIjM2J

:Pe4C C Q9z)I,H0Direction 设置参数的数据流向51Testing软件测试网T'\?5_8KZ U&d:D

|(ACH(w\"tk"D0adParamInput 1 输入参数,即传送数据给一个存储过程51Testing软件测试网j Ve8{ A ER u0r

51Testing软件测试网0WFT|q

adParamOuput 2 输出参数,即从得到Command对象执行后的输入值

6Ei9]7iPm\2yC7N0

n7aP&ph R![`0adParamInputOutput 3 输入和输出参数,即传送并接收数据51Testing软件测试网u n9x$|H$Jo'[5Z

:IJiH7~0adParamReturnvalue 4 返回值,用来读取从存储过程返回的状态值

;w*YiK+nW051Testing软件测试网h3`H GLO_Z#@Q

51Testing软件测试网"b2x@ ]*N L;MY${
---------------------------------------------------------------------

}1Syv;_~"t)g(E0

]LW$s-iFs9ah0Command对象的基本用法51Testing软件测试网,U9J{ @|VW0A

(^T wYoB0
jpt0?)@sF-_*V0Set cm = Server.CreateObject("ADOBD.Command")
*o8m4c D0}1Z.G0Set cm.ActiveConnection = conn

iX)ec2g x1`j Q051Testing软件测试网}| U9C;?hl|+?

‘将Command对象与Connection对象关联后,接着用CommandText属性来定义一个命令串,这个串将由Execute方 法执行。51Testing软件测试网X9o4F6LPE5h"F)NM

or l&g0z:bS0cm.CommandText = "select * from books"
/vk9u)~O1v-aT1Q0cm.CommandType = adCmdText51Testing软件测试网&\;ET~:{c

j)RD-]&^u#i(_0或者将命令串定义为一个表名51Testing软件测试网]u1g@6Cpt9SC

G3z&ZM2T#p-|n*p3e0cm.commandText = "books"
pS4e3x7z__0cm.CommandType = adCmdTable

/c9m|$bl4F#Z g0

5EG4p q$E_c R*S1P8w~0设置CommandText属性后,就可以执行Command对象了。执行Command对象,实际上就是执行Command对象所指定 的查询。

7\(G`XfXt0

'H^:r~[:G:an051Testing软件测试网fDb0D[+ggp)j"Tu
```````````````````````````````````````````````````51Testing软件测试网tc f7aZ^*a
```````````````````````````````````````````````````

B'IW-pRV0

8cq'qzw(r*x0
|5LY%g1ui0使用参数的情况:

^]3E4L;VZ!Z'H1g B$U0

G*pR,j+URu051Testing软件测试网B(Wg(yd)P J8t
要执行一个参数查询,必须先调用CreateParameter方法创建一个Parameter对象,然后调用Append方法将其添 加到Parameters集合中,再将值赋予给参数。例如:

Jv.D%T:b2Ell051Testing软件测试网.BUp'l;KRI

‘创建一个Parameter对象并将其添加到Parameters集合中51Testing软件测试网!nY-F'S8u6dgG;z
cm.Parameters.Append cm.CreateParameter("OrderId",adVarChar,,6)51Testing软件测试网P(k/m~4I(dYK3w"A;Y
cm("OrderID") = "D00001" ‘未选择时,将第一个订单号赋予参数

Vt:C8_g._S:q051Testing软件测试网3k;Dp T-pE1y


j4ac0H(u eQ;r0CreateParameter方法的语法是:

C9A,LR#Cf051Testing软件测试网/c"F WKC P|W5LF

set para = comm.CreateParameter(Name,Type,Direction,Size,value)

8qT;o-Dxn051Testing软件测试网9m_a'V3H_

其中,para是CreateParameter方法返回的Parameter对象。comm是已创建的Command对象。Name定义了参数的名 称。Type定义了参数的类型

;q Z0?yF4X0f*V0

p O^2jS8n5u?-aZJT0 

Q#C6?9G M8yJ051Testing软件测试网U~HR'A [O l

Parameters 集合和 Parameter 对象

v G]m9] L,a\0

6TXL-l A0Command对象包含一个Parameters集合。Parameters集合包含参数化的Command对象的所有参数,每个参数信息 由Parameter对象表示。51Testing软件测试网5P8JC"F2W:h^

lhkeK)B%MK1qf ^051Testing软件测试网t|;tkq YX
Parameters集合的属性和方法

pa~:^ ?*OF051Testing软件测试网6O Sbn Bc/Ys7nU#~

Count 属性 返回Command对象的参数个数

(n| P:O+n)FE0

9R5px'MP1k` CD0Append方法 增加一个Parameter对象到Parmeters集合中。

Sj {G!\c0

~]Q$IyFF-q1U0Delete 方法 从Parameters集合中删除一个Parameter对象。

u)~+h!UUPU o0

*L)U R%|!} VQ0 

qdo?in1sqOxo9T2T0

Bs,xk3VA0------------------------------------------------------------------------
E#i p6_RS D0------------------------------------------------------------------------

,_0J:d;K$\051Testing软件测试网viC6n-uO7P

调用存储过程

6qss?'Q } v0

m7d p\m0Set cm = Server.CreateObject("ADOBD.Command")51Testing软件测试网 c s0K;O jzQ+A
SEt cm.ActiveConnection = conn51Testing软件测试网Z']:^NY%U8LF$z
‘将CommandText属性设为存储过程名51Testing软件测试网g)WLU+giDY
cm.CommandText = "sp_proc"51Testing软件测试网`l6yb j
‘将CommandType属性设为储存过程
y7m{c5N$h0cm.CommandType = adCmdStoredProc

~0C6W fRN.A0

2N([&b1i{0‘创建第一个参数51Testing软件测试网 j3E*N7f S

&u-^wUGm0dV^0Set param = cm.CreateParameter("@test",adVarChar,adParamInput,10)51Testing软件测试网@[.?4RYBL

51Testing软件测试网!G2pWxnFdH

‘添加到Parameters集合中

#d.Q2o,g P4TE0

a4c#Y,p~el0cm.Parameters.Append param

M [q[z8`*M J$U8E0

{K4G;lY*CDI-U'l0‘创建第二个参数

:X.g c+_1a:q051Testing软件测试网9wf|2l#K Bb

Set param = cm.CreateParameter("@dates",adDate,adParamInput)

Y8[&M$JXb,I8CM0

P@O2l6ZD)Y0‘添加到Parameters集合中

AJ `A:E-H(i)PU0

.d$k%I*P`/t2r'a0cm.Parameters.Append param

o5Y{'_%n?/D0

O5LD9}sM~c&j0设置输入值

:Z%pJ'CUR O7W051Testing软件测试网msF}w1g

cm("@test") = "小说"51Testing软件测试网Rl1t%InJ p0jIcS

:d%F(tVPz0cm("@dates") = "1998-3-1"

N0A;Y N"\+B` t1yM j"S9i051Testing软件测试网tGTf s0u;~


B~1S8W| wb6Yh0rs.open cm,,1,1 51Testing软件测试网2A4A7yJk)W

{y-u$j8t9B0

TAG: DataBase

 

评分:0

我来说两句

日历

« 2024-04-06  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 76623
  • 日志数: 93
  • 建立时间: 2007-03-22
  • 更新时间: 2007-12-31

RSS订阅

Open Toolbar