【转帖】WebComputing━ADO总结报告
上一篇 / 下一篇 2007-08-16 14:43:51 / 个人分类:Web测试
/vw4S,UG+nCL0在当今提出的多种动态网页(Dhtml)解决方案中都强调了与数据库的连接,其实网页接挂后台数据库也是当前的热门应用,在电子商务等领域有着广泛的应用.MicroSoft为了适应其发展推出了新的ADO(Active Data Object)模型,通过ODBC的连接可以对当前流行的桌面数据库系统提供方便,快洁的连接.在这里,我想通过ADO在ASP技术中的应用来总结一下ADO对象以及其各自的属性和方法.51Testing软件测试网}9~$uRp!X1x;d_
一、ADO对象模型:51Testing软件测试网ze!~+r!bd8x"V
下面简单介绍一下ADO的对象模型
.}A]6Mk7p nj9]0ADO有三大对象,即Connection对象,Command对象,RecordSet对象.
aYa+Cb cV(MW"A4N0Connection(对象)51Testing软件测试网 J0?PQ0}u4D7|
─Errors(集合)─Error(对象)51Testing软件测试网-b0_^1G$L+P8\%y-L
Command(对象)51Testing软件测试网r-k9A)jmEV#lb
c
─Parameters(集合)─Parameter(对象)
h$aB(^U0RecordSet(对象)
Ki*p,Ii q0─Fields(集合)─Field(对象)51Testing软件测试网C
m^3dL1k#G
5^2k?7hE(oze0 其中Connection对象,Command对象,RecordSet对象和Field对象又分别具有Properities集合而产生Properity对象.我们在asp编程中已经对这几个对象有了足够的了解.下面是以上三大对象的相互关系.
3J9d cSj0Command.ActiveConnection-$#@62;Connection51Testing软件测试网LgrJ/F
RecordSet.ActiveConnection-$#@62;Connection51Testing软件测试网7l*jl,\*p|G\/]F
Connection.Execute-$#@62;RecordSet
!fC'c0K#K_0Command.Execute-$#@62;RecordSet51Testing软件测试网Lr;EsH5B+Gs5W
RecordSet.Source-$#@62;Command51Testing软件测试网rE;ot
U
好了,有了以上的关系表后,你应该能理解有一些等价的表达形式了.
-J h'_ `H|4T0形式1
'F.esS
[z x0set rs = Server.CreateObject("ADODB.RecordSet")
&@4h`-n"d&k1I3w0strConn = "driver={SQL Server};server=srv;"& _51Testing软件测试网E`z
|M|+hL
"uid=sa;pwd=;database=pubs"
/Y1T,]K&i9x8R0strSQL = "Select * From Employee ;"51Testing软件测试网9G2M3Gp9d
rs.open strSQL,strConn,,,adCmdText
y"] _R+^\L0形式2
H.N
E&h_c0set conn = Server.CreateObject("ADODB.Connection")51Testing软件测试网a5I
X
w5Z
strConn ="driver={SQL Server};server=srv;"& _51Testing软件测试网fG3?!? pn&r
"uid=sa;pwd=;database=pubs"
s-wl#`W0conn.open strConn51Testing软件测试网r E,k'}E.q
set rs = Server.CreateObject("ADODB.RecordSet")
)~0h9A G oc7Tc0rs.ActiveConnection=conn(注意此句)51Testing软件测试网6JB\(N/H;I6L?GZ X'Q
strSQL = "Select * From Employee ;"
ij^Wq^#wxV*Owp0rs.open strSQL,,,,adCmdText51Testing软件测试网)K.S)UYSe2qV
"上面这句也可以写成rs.open strSQL,conn,,,adCmdText
.G"Ry$oY0形式3
e5op&j(Gu6XA0set conn = Server.CrreateObject("ADODB.Connection")51Testing软件测试网.O+F'f0gVB
set rs = Server.CreateObject("ADODB.RecordSet")
C&LCg:W3mK'Y|0strConn ="driver={SQL Server};server=srv;"& _51Testing软件测试网;mq,sq/u4a%T
"uid=sa;pwd=;database=pubs"
G.q W7N)v&Q're$c0conn.open strConn51Testing软件测试网8sQ8gY9Fi%^n[+a"i
strSQL = "Select * From Employee ;"
#F
p {@W)DR;J{ l0rs=conn.Execu strSQL(注意次句)
pO }nM%O)ip+r0形式4
zdWO
F
^v'`lC0set rs = Server.CreateObject("ADODB.RecordSet")51Testing软件测试网v,`@~/Kx,KeG
strConn ="driver={SQL Server};server=srv;"& _
8iX6B:[*_Lp:R0"uid=sa;pwd=;database=pubs"
@D5rMb?(|0strSQL = "Select * From Employee ;"
xy]Q|
zI#l0rs.open strSQL,strConn,,,adCmdText51Testing软件测试网f.]"z*c9j;G%SM,~
注:上面的例子中均假设SQL Server的name=srv,使用SQL Server Authentication采用了默认的帐号sa,该帐号没有设定密码。51Testing软件测试网v fB(I^;l7a&g ^ y
51Testing软件测试网#ny9T6uQ-xW上面这几种形式都能够产生一个相同的RecordSet对象的实例rs,但方法各异,在后面的讨论中我们将看到它们不同的优越性.
4v Nw]6]X)^D051Testing软件测试网T:]K o%WH u:Be二、Connection对象:
hN\qX)h0nEH0 在ADO的模型中,Connection对象是最基本的对象,他主要是提供与数据库的连接。其他的两个对象都是通过它与数据库的连接来完成操作的。它的属性、方法如下所示。
VZlr5?@0Connection对象的主要属性
e2PnTBW0 1、 CursorLocation,它的取值有两个,一个是adUseClient,一个是adUseServer(默认),从其英语本身的含义就可以看出,前者是使用客户端的游标,而后者是使用服务器端的游标。二着的差别在于adUseClient游标可以提供供应商所没有提供的额外的属性,因而灵活性更大。需要注意的是Connection对象与RecordSet对象均有此属性,由Connection对象产生的RecordSet对象会自动的继承这个属性。另外要让此属性对Connection和RecordSet对象的实例起作用的话,必须在打开它们之前先定义。
(E1@sy [\6O3J*\051Testing软件测试网ty%M:Seh"r
下面看一个例子51Testing软件测试网O3g3S$UuI:U&n3LF@`
Set conn=Server.CreateObject("ADODB.Connection")51Testing软件测试网[:?,L3t?!h@ I$YcE
conn.CursorLocation=adUseClient
*x'yr7X0I GXS0strConn ="driver={SQL Server};server=srv;"& _51Testing软件测试网}xHji;faxM*`O,M
"uid=sa;pwd=;database=pubs"
vrp-o2A/?0conn.open strConn51Testing软件测试网 dUe ?C3amM
set rs= Server.CreateObject("ADODB.RecordSet")51Testing软件测试网N"gyk a@%s-HU
rs.open "emloyee",conn,,,adCmdTable
-P5|:os*u(w2q,Tm4C0采用次种方式则conn与rs的游标均为adUseClient了。51Testing软件测试网g2Q{j
PO
2、 ConnectionString,在打开一个Connection实例之前设定数据库的连接信息。在上面的例子中我们使用了一条语句conn.open strConn,其中的strConn就是ConnectionString,因此我们可以重写上面的语句如下:
JYN5fle-_PE'r0Conn.ConnectionString=strConn51Testing软件测试网'FXl7a4K'g!b|g
Conn.open
(O7X]7{u(U)V){{0 3、 ConnectionTimeOut,设置连接超时。51Testing软件测试网)\J8B*pL!Q`5A5KoK"p
4、 CommandTimeOut,设置命令执行超时。51Testing软件测试网5hd#or5fx#f k
Connection的主要方法51Testing软件测试网\5ReB1^}
1、 open,打开一个Connection的对象实例,常用的写法为conn.open ConnectionString,如果在打开之前已经定义了ConnectionString属性的话,就可以直接的打开。
&QK
s'YR2j2g\*T0 2、 Execute,产生一个RecordSet实例,常用的写法为51Testing软件测试网0da*\LK$wC
Rs=conn.Excute CommandText,RecordsAffected,Option
"{4~:iW&Jc0其中的CommandText可以为以下的几种形式,主要由Option的值来决定1) SQL语句,此时Option的值为adCmdText,表示将执行一段SQL语句。2)数据库的一个表名,此时Option的值为adCmdTable,表示将对该表进行操作。
)Gh#M \1y Ki0 3、一个StoredProcedure名字,此时Option取值为adCmdStoredProc,它表示将要执行一个SQL上定义的存储过程。这是一个非常灵活而强大的方法,它可以对用户隐藏数据库的具体信息,而只需用户提供适当的参数就可以了,还能返还需要的参数值。在后面介绍Command对象时再做详细的介绍。值得注意的是,有时Excute后并不需要返回一个RecordSet对象,例如在表中删除记录。看下面的例子:
'f,sQ:{ jx6ht j0set conn= Server.CreateObject("ADODB.Connection")
d\+w%o*v3o0conn.ConnectionString="driver={SQL Server};server=srv;"& _
)l;v!H
@QZITG\-u0"uid=sa;pwd=;database=pubs"
FA9Gi5Q;YD0conn.open51Testing软件测试网[-u9]eQ*ng+R9V;Ry%T
conn.Execute "Delect From Employee Where Job_ID=1;",,adCmdText51Testing软件测试网
~|0v[E/q`
该例子删除Employee表中Job_ID为1的记录,并不需要再返回一个RecordSet的实例,但如果将最后一句变为rs= conn.Execute "Delect From Employee Where Job_ID=1;",,adCmdText那么我们就可以用此rs来指向表中的记录条了。返回的rs和后面RecordSet对象中用Source属性产生的rs是相同的。51Testing软件测试网'q L1{A
sHh
Connection对象的集合
FQ&SI-WV2\a01、 Errors集合,对应产生Error对象。我们将在后面做单独的讨论。
3L jJd8y&]02、 Properties集合,对应产生Property对象,下面给出一段代码,它包含了Property对象的主要方法和属性。51Testing软件测试网{-Q2VR!V
1C0[YLoutz-m?0
KawE5b u;OZ9N051Testing软件测试网\ s.JN;\$#@60;%
Y&n