ADO使用的简单介绍

Author: 飞鸟 Date: 2001年 41期

?牐燗DO即ActiveX Data Objects,是微软提供的使ASP具有访问数据库的组件。熟悉VB数据库编程的朋友会发现ADO与RDO(Remote Data Objects)有某种类似的地方。但据说ADO的访问速度更快,内存需要更小。
  ?牐燗DO中主要有如下几种对象Connection、Command、Recordset、Error、Parameter、Property、Field。而Recordset对象是ADO访问数据的主要界面。
  ?牐燫ecordset常通过如下的方式访问数据。
  ?牐?1.通过Execute方法
  ?牐燨n a Command object??
  ?牐燬et recordset = command.Execute _
  ?牐牐≧ecordsAffected,Parameters,Options)??
  ?牐燾ommand.Execute RecordsAffected,_
  ?牐燩arameters,Options
  ?牐燨n a Connection object:??
  ?牐燬et recordset = connection.Execute _
  ?牐牐–ommandText,RecordsAffected,Options)??
  ?牐犝庵址绞较拢鲆桓霾檠鞘旨虻ビ行У模ㄓ绕涫怯胏onnection)。曾对Access写过这样的程序:
  ?牐爏et rs=conn.execute("select*from employee")??
  ?牐牻峁⑾謗s.recordcount等于-1,也就是在这种方式下无法知道记录总数。
  ?牐犝庵址绞揭桓銮看蟮墓δ芫褪强梢灾啦僮饔跋斓募锹际?
  ?牐犂纾?
  ?牐燿im recordsAffected
  ?牐爏et rs=conn.execute( _
  ?牐?"delete * from employee where sales<100",_
  ?牐爎ecordsAffected)
  ?牐爎esponse.write cstr (recordsAffected)& _
  ?牐?" record(s)deleted"
  ?牐?2.通过Open方法
  ?牐爎ecordset.Open Source,ActiveConnection,_
  ?牐燙ursorType,LockType
  ?牐犝庵址椒ㄏ拢惚匦胂鹊饔肧erver.Createobjectm()产生一个Recordset实例:
  ?牐燿im rs
  ?牐爎s=server.createobject("adodb.recordset")
  ?牐牭饔胦pen方法的时候跟前面一样,也可使用Command或不用。
  ?牐犗壤此邓挡挥肅ommand对象的情况,下面是做查询记录的例子:
  ?牐燿im sql
  ?牐燿im rs
  ?牐燿im conn
  ?牐爋n error resume next
  ?牐爏et conn=server.createobject("adodb.connection")
  ?牐燾onn.open "employee","sa",""
  ?牐爏ql="select * from employee where sales>="& _)
  ?牐燾str(minSales)
  ?牐爏et rs=server.createobject("adodb.recordset")
  ?牐爎s.open sql,conn,1,1
  ?牐牐?11分别是 CursorType和 LockType
  ?牐牐?请参考 ADO的说明书
  ?牐牐?如果以这种方式打开Recordset,
  ?牐牐? recordcount就不会是-1了
  ?牐燿o while not rs.eof
  ?牐牐? here is some operate
  ?牐爎s.movenext
  ?牐爈oop
  ?牐爎s.close
  ?牐燾onn.close
  ?牐犗旅媸巧境锹嫉睦樱?
  ?牐燿im sql
  ?牐燿im rs
  ?牐燿im conn
  ?牐爋n error resume next
  ?牐爏et conn=server.createobject("adodb.connection")
  ?牐燾onn.open "employee","sa",""
  ?牐爏ql="delete from employee where sales<=100"
  ?牐爏et rs=server.createobject"adodb.recordset"??
  ?牐爎s.open sql,conn,3,3
  ?牐爎esponse.write "record(s,deleted")
  ?牐燾onn.close
  ?牐犠⒁獯耸庇捎趓s并不返回记录集。所以结束时不必关闭rs。这样的用法同时适用于SQL的update、insert into语句。
  ?牐犜倮刺致凼褂肅ommand对象的open方式。
  ?牐犑褂弥跋纫?立Command对象的实例
  ?牐燿im cmdTemp
  ?牐燿im dataconn
  ?牐燬et DataConn = Server.CreateObject _
  ?牐牐?"ADODB.Connection")
  ?牐燿ataconn.open "employee","sa",""
  ?牐燬et cmdTemp = Server.CreateObject _
  ?牐牐?"ADODB.Command")??
  ?牐燾mdTemp.CommandText = _
  ?牐?"SELECT (FROM employee WHERE employeeID=" & _
  ?牐燾str(paraID)
  ?牐燾mdTemp.CommandType = 1
  ?牐燬et cmdTemp.ActiveConnection = dataConn
  ?牐燿im rs
  ?牐爏et rs=server.createobject("adodb.recordset")
  ?牐爎s.Open cmdTemp(1,3)
  ?牐爎s("salary")= rs("salary")+ 200
  ?牐爎s("...")=....
  ?牐?......
  ?牐爎s.Update
  ?牐爎s.close
  ?牐燿ataconn.close
  ?牐犝庵纸樯苤皇侨么蠹壹虻チ私釧DO,权作抛砖引玉吧。