欢迎光临
我们一直在努力

WebComputing━ADO总结报告4

建站超值云服务器,限时71元/月

四、command对象:

  从英语字面的意思就可以看出,command是用来做命令执行和参数传递的。而command对象的批量参数传递,storedprocude执行等等灵活而强大的功能也是它受到青睐的原因。command对象主要是向sql语句、storedprocude传递参数,依靠sql server的强大功能来完成数据库的操作;而recordset对象可以说是微软从新封装了数据对象,并提供了一系列的方法和属性来简化数据库的编程。我们看下面的一个例子,它用了两种不同的方法实现了向数据库中增加一新的记录条。从中可以清楚的看到command对象与recordset对象的不同点。

方法1(command)

const adcmdtext=&h0001

const adinteger=3

const advarchar=200

const adparaminput = &h0001

set conn=server.createobject("adodb.connection")

set comm=server.createobject("adodb.command")

conn.open "driver={ microsoft access driver};dbq="& _

server.mappath("/source_asp")&"/property/employee.mdb;"

comm.activeconnection=conn

comm.commandtype=adcmdtext

comm.commandtext="insert into employee (job_id,fri_name,last_name)"& _

&"values(?,?,?)"

set param=comm.createparameter("id",adinteger,adparaminput,3,4)

comm.parameters.append param

set param=comm.createparameter("fn",advarchar,adparaminput,255,"bill")

comm.parameters.append param

set param=comm.createparameter("ln",advarchar,adparaminput,255,"gates")

comm.parameters.append param

comm.execute

conn.close

方法2(recordset)

const adcmdtable=&h0002

set conn=server.createobject("adodb.connection")

set rs=server.createobject("adodb.recordset")

conn.open "driver={microsoft access driver (*.mdb)};dbq="& _

server.mappath("/source_asp")&"/property/employee.mdb;"

rs.activeconnection=conn

rs.open "employee",,,adcmdtable

rs.addnew

rs("job_id")=4

rs("fri_name")="bill"

rs("last_name")="gates"

rs.update

rs.close

conn.close

  从上面的例子就可以看出来了,这两个对象在处理一些问题上所用的不同的方法.recordset对象似乎更加好理解一些,因为它加入了一些在ansi sql中没有的元素,它其实是用 sql在数据库上产生一个记录集,然后用一个游标来指向这个记录集,超作该游标来遍历这个记录集。但在性能上来讲的话command的性能也相对要优越些.其可重应用性也非常的好。而且如果你是批量的加入记录的话,你也能体会到第一种方案的好处了,因为command对象就是将sql产生的记录集作为整体来处理。下面详细介绍command对象的属性、方法和集合。

   1、 createparameter方法:用来产生一个parameter对象,常用的写法为set param=comm.createparameter(name,type,direction,size,value),其中name为参数的引用名,在后面引用参数的值时会有用;type为指定参数的类型,例如整数为adinteger;direction指定参数是输入还是输出,相应的值为adparaminput和adparamoutput;size指定参数的最大长度或最大的值;value指定参数的值。可以将各个选项分开来写,下面的两种写法是等价的:

set param= comm.createparameter(name,type,direction,size,value)



set param= comm.createparameter(name,type,direction,size)

param.value=value

  下面的方法其灵活性更大。大家请注意,在使用了createparameter方法后只是建立了新的 parameter对象,还需使用parameter对象的append方法将该参数传递给command对象。

  2、 execute方法:在指定了commandtext后,并将参数传递出去后,用execute方法来完成执行。

  3、 activeconnection属性:用来指定与connection对象的连接,这里的一个技巧就是不同的command对象指向同一个connection连接。

  4、 commandtext属性:其值可以是一条sql命令句,可以是一个表名,也可以是一个storedprocedure名。

  5、 commandtype属性:它的值由commandtext相应值的给出,分别为adcmdtext,adcmdtable,adcmdstoredproc。与前面在讲connection对象的execute方法中的相应的选项的含义相同。

  6、 commandtimeout属性:设定命令执行的超时的值。

  7、 properties集合:我们不多讲了,与connection对象的property集合相差不多。

  8、 parameters集合:也就是参数对象的集合了,他有主要item方法、append方法,和count属性,用法与property对象及error对象的相应属性和方法类似,下面给出一个示例:

const adcmdtext=&h0001

const adinteger=3

const advarchar=200

const adparaminput = &h0001

set conn=server.createobject("adodb.connection")

set comm=server.createobject("adodb.command")

conn.open "driver={microsoft access driver (*.mdb)};dbq="& _

server.mappath("/source_asp")&"/property/employee.mdb;"

comm.activeconnection=conn

comm.commandtype=adcmdtext

comm.commandtext="insert into employee (job_id,fri_name,last_name)"& _

"values(?,?,?);"

set param=comm.createparameter("id",adinteger,adparaminput,3)

param.value=14

comm.parameters.append param

set param=comm.createparameter("fn",advarchar,adparaminput,255,"bill")

comm.parameters.append param

set param=comm.createparameter("ln",advarchar,adparaminput,255,"gates")

comm.parameters.append param

comm.execute

conn.close

"the folowing statments show the value of parametrs

dim i

for i=0 to comm.parameters.count-1

response.write comm.parameters.item(i)&"<br>"

next

  当然,我们在引用参数时也可以不用数字,而用前面在createparameter时定义的名字,例如:fn、id等等。另外我们可以将上面的程序的显示部分改为

dim key

for each key in comm.parameters

response.write key&"<br>"

next

  下面我想重点讲一讲storedprocedure,它的强大足以让我们对它关注,当然这其中会涉及到一些sqlserver的知识

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » WebComputing━ADO总结报告4
分享到: 更多 (0)