帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程
WebComputing━ADO总结报告4
作者:pepper_dog 发布时间:2005-03-12 来源:yesky
四、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的知识

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·WebComputing━ADO总结报告1  (2005-03-12)
 ·WebComputing━ADO总结报告2  (2005-03-12)
 ·WebComputing━ADO总结报告3  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统