教学前言
课程介绍
师资介绍
教材介绍
课程计划
教学大纲
教学计划
实训计划
课程总表
教学内容
作业考试
作业上传
在线测试
测验考试
互动讨论
学习论坛
疑难解答
意见建议
 
 
章节:
第6章 ASP与数据库的集成
6.3 Command命令对象 FLASH版演示教案
教学目的:

了解命令对象的创建、方法、属性;

了解查询操作

重点:
Command命令对象
难点:
查询操作
内容:

Command命令对象负责对数据库提供请求,传递SQL命令,可以对数据库进行数据查询、添加、删除、更新等操作。它有强大的数据库访问功能,即可以完成对数据库的插入、删除等无须返回结果的操作,也可以使用查询语句返回一个记录集。它介于连接对象与记录集对象之间,先通过连接对象与数据库连接,然后通过命令对象发出SQL的操作命令,再把得到的结果返回给记录集对象。Command对象对数据库的操作一般采用SQL语句。
相比较而言,由于使用连接对象也可以对数据库进行数据查询、添加、删除、更新,因此Command命令对象应用不多。但如果面对的是一个比较大型的程序,要处理相对比较多的记录,这时候就要求比较快的处理速度,如果使用Command命令对象的查询方法能大大提高数据库的处理速度。
6.3.1 创建Command命令对象
创建命令对象语法如下:
Set 命令对象名=Server.CreateObject("ADODB.Command")
例如我们创建一个名为cmd的命令对象。
Set cmd=Server.CreateObject("ADODB.Command")
注意:为了说明问题的方便,给命令对象取名为cmd,本书下面的实例中命令对象名均为cmd。
具体有二种常用的创建命令对象的方法。
第一种,通过Connection对象建立Command命令对象,见下面的范例。
范例6-12:通过Connection对象建立Command命令对象
<%
Set db=Server.CreateObject("ADODB.Connection") ' 首先建立Connection对象
db.Open"zbsdbbszb"
Set cmd=Server.CreateObject("ADODB.Command ") ' 建立command命令对象
cmd.ActiveConnection=db ' 用ActiveConnection属性指定连接对象名称
%>
第二种,直接建立Command命令对象。见下面的范例。
范例6-13:直接建立Command命令对象
<%
Set cmd=Server.CreateObject("ADODB.Command ") ' 建立Command命令对象
' 用ActiveConnection属性指定所操作的数据源名称
cmd.ActiveConnection="zbsdbbszb"
%>
注意使用此方法实际上是先建立了一个隐含的连接对象,但由于没有明确建立连接对象,因此无法使用连接对象的一些功能。
6.3.2 Command命令对象的属性
Command命令对象的常见属性见表6-9。

表6-9 Command命令对象的常见属性
属性
说明
ActiveConnection 指定连接对象
CommandText 表示数据库的查询信息,可以是SQL语句、数据表名、查询名、存储过程名等
CommandType 表示数据查询信息的类型,见下表
CommandTimeout 命令对象的Execute的最长执行时间,默认为30秒
Prepared 指定数据查询信息是否要先行编译和存储,对经常所用的查询语句可以设置为先编译存储,这样可以使查询速度加快。布尔值

命令对象的常见属性说明如下。
1.ActiveConnection
用于指定连接对象,表示命令对象通过哪个连接对象进行数据库操作,语法如下:
cmd.ActiveConnection=db或数据源名
2.CommandText
用户指定数据查询信息,指示要对数据库进行的各种操作信息,包括查询、添加、删除、更新等操作,语法如下:
cmd.CommandText=SQL语句或数据表名或查询名或存储过程名
通常SQL语句用的比较多。
范例6-14:用SQL语句指定查询信息
<%
cmd.CommandText="select * from article" ' 用SQL语句表示从article表中查询所有记录
%>
范例6-15:用数据表名指定查询信息
<%
cmd.CommandText="article" ' 用数据表名表示从article表中查询所有记录
%>
数据查询信息也可以用查询名或存储过程名来表示,关于查询在后面将会专门介绍,而存储过程相对比较复杂,本书不作介绍。
3.CommandType
用于指定数据查询信息的类型。前面所述,数据查询信息可以是SQL语句或数据表名或查询名或存储过程名,通过CommandType属性指定数据查询信息的类型,语法如下:
cmd.CommandType=类型值
CommandType 类型值见表6-10。

表6-10 CommandType 类型值
参数
类型表示值
说明
AdCmdUuknown -1 无法确定,由程序本身去判断,影响运行速度。默认值
AdCmdText 1 SQL命令类型
AdCmdTable 2 数据表名
AdCmdStoreProc 4 查询名或存储过程名

范例6-16:表示查询类型为SQL命令类型
<%
Set cmd=Server.CreateObject("ADODB.Command ")
cmd.ActiveConnection="zbsdbbszb"
cmd.CommandType=1 ' 表示查询类型为SQL命令类型
cmd.CommandText="select * from article"
%>
说明:如果没有cmd.CommandType=1,将由系统自已判断查询类型,这样将影响运行速度。
4.CommandTimeout
用于指定Command命令对象的Execute的最长执行时间,默认为30秒,如果设置为0,表示永久等待直到执行操作。设置CommandTimeout的语法如下:
cmd.CommandTimeout=秒数
5.Prepared
用于指定数据查询信息是否要先行编译和存储,对经常所用的查询语句可以设置为先编译存储,这样可以使查询速度加快。语法如下:
cmd.Prepared=布尔值
True表示要先将查询信息进行编译存储,False反之。
范例6.17:Command命令对象的常见属性综合运用
<%
set cmd=Server.CreateObject("ADODB.command ") ' 建立命令对象cmd
cmd.ActiveConnection=db ' 用ActiveConnection属性指定连接对象名称
cmd.CommandTimeout=60 ' 设置命令对象的Execute的最长执行时间为60秒
cmd.CommandType=1 ' 表示数据查询信息的类型为SQL语句
cmd.Prepared=true ' 表示数据查询信息要先行编译和存储
cmd.Commandtext="select * from article" ' 数据库的查询信息所用的SQL语句
%>
6.3.3 Command命令对象的方法
Command命令对象的常用方法见表6-11。

表6-11 Command命令对象的常用方法
方法
说明
Execute 执行数据库操作
CreateParameter 创建Parameter对象

命令对象的方法说明如下。
1.Execute
用于执行数据库查询、添加、删除、更新等操作。其用法与连接对象的Execute方法基本相同。其语法有两种:
第一种,如果是需要返回记录集,则使用语句如下:
Set 记录集对象名=cmd.Execute
第二种,如果是没有必要返回记录集的操作,例如添加、删除、更新等,则可以使用语句如下:
cmd.Execute
第一种方法将返回一个记录集对象,便于对查询结果做进一步的处理;第二种方法仅是对数据库操作,并不返回记录集对象。
范例6-18:需要返回记录集
<%
set cmd=Server.CreateObject("ADODB.command")
cmd.ActiveConnection=db
' 执行查询操作,需要返回记录集对象,rs为记录集对象名
cmd.CommandType=1
cmd.Commandtext="Select * from article"
Set rs= cmd.Execute
%>
范例6-19:不需要返回记录集
<%
set cmd=Server.CreateObject("ADODB.command")
cmd.ActiveConnection=db
' 执行删除操作,不需要返回记录集
cmd.CommandType=1
cmd.Commandtext="Delete * from article where name='张三'"
cmd.Execute
%>
2.CreateParameter
用于创建Parameter参数对象。Parameter对象是命令对象的子对象,其具体描述见下。
6.3.4 Parameters参数集合和Parameter参数对象
1. Parameters参数集合
Parameters参数集合的属性只有Count。Count返回Parameters参数集合中Parameter参数对象数目,语法如下:
cmd.Parameters.Count
范例6.20:输出Parameter对象数
<%= cmd.Parameters.Count %>
Parameters集合的常用方法见表6-12。

表6-12 Parameters集合的常用方法
方法
说明
Append 将新建的Parameter对象加入到Parameters集合中
Delete 删除Parameter对象
Item 取得集合内的某个对象
Reflash 重新整理Parameters集合

以上方法说明如下。
(1) Append
用于将新建的Parameter对象加入到Parameters集合中。当创建Parameter对象后,只有将它加入到Parameters集合中,才能通过它传递数据,语法如下:
cmd.Parameters.Append Parameter对象
(2) Delete
用于删除Parameter对象,语法如下:
cmd.Parameters.Delete(index)
Index为删除对象在集合里的索引值,索引值编号从0开始,按所添加的先后顺序排列。
(3 )Item
用于取得Parameters.集合内的某个Parameter对象,语法如下:
Set Parameter对象= cmd.Parameters.item(index)
Index为对象在集合里的索引值,索引值编号从0开始,按所添加的先后顺序排列。
(4)Reflash
用于重新整理Parameters集合,语法如下:
cmd.Parameters.Reflash
2.Parameter参数对象
Parameter参数对象代表参数或与基于参数化查询或存储过程的命令对象相关联的参数,负责传递命令对象所需要的SQL命令参数。Parameter参数对象可以看成是命令对象的子对象。
首先要建立Parameter对象,建立Parameter对象需要使用命令对象的CreateParameter方法,语法如下:
Set Parameter对象=cmd.CreateParameter(参数)
注意:为了说明问题的方便,给Parameter对象取名为prm,本书下面的实例中Parameter对象名均为prm。
建立Parameter对象的参数如表6-13所示。

表6-13 Parameter对象的参数
参数
说明
Name 参数名称
Type 参数类型,可选,其值见下表6-14
Direction 参数传入或是传出,可选,其值见表6-15
Size 参数最大字节数,可选
Value 参数值

Type值见表6-14。

表6-14 Type值
参数
说明
AddbTimeStamp 135 日期时间类型
AdInteger 3 整数
AdSingle 4 单精度小数
AdDouble 5 双精度小数
AdVarChar 200 变长字符串

Direction值见表6-15。

表6-15 Direction值
参数
说明
AdParamInput 1 传入
AdParamOutput 2 传出
AdParamInputOutput 3 传入传出
AdParamReturnValue 4 从子程序返回数据到参数中
     

Parameter对象的属性。其属性与CreateParameter(参数)基本相同,因为用的比较少,这里不再详述。
Parameter对象的方法。其方法只有AppendChunk,用于添加数据到Parameter对象,语法如下:
Prm.AppendChunk(长文本或二进制数)
6.3.5 查询操作
使用Parameter参数对象和Parameters参数集合可以定义参数化查询。
在前面介绍CommandText时,谈到查询信息可以是查询名。所谓查询就是在数据库里预先设置查询信息,也就是存储在数据库中预先定义的SQL查询语句,形成一张虚拟的表,在这张虚拟表中进行操作。在Access 数据库里我们可以建立并直接执行查询,进行添加、删除等操作。虽然ASP里利用查询只能查询记录,而不能进行添加与删除等操作,但是采用在Access数据库里预先设置好查询,然后在ASP程序里调用这个查询就可以加快查询速度,特别是要在数据量比较大的数据库执行查询操作,这种方法可以明显加快操作速度。
查询分为非参数查询和参数查询。所谓非参数查询是指在查询中不需要输入参数;所谓参数查询是指在查询中需要输入查询参数。在参数查询中要运用Parameters参数集合和Parameter参数对象。
范例6-21:非参数查询,查询sdbbs数据库article表中name字段值为”张三”
<html>
<head>
<title>非参数查询范例</title>
</head>
<body>
<%
' 建立Connection对象
Set db=Server.CreateObject("ADODB.Connection")
db.Open"zbsdbbszb"
' 建立Command对象
Set cmd= Server.CreateObject("ADODB.Command")
cmd.ActiveConnection=db
' 执行查询authorname1
cmd.CommandType=4 ' 指定查询信息是查询名
cmd.CommandText="authorname1" ' 指定查询名称
Set rs=cmd.Execute
Do While Not rs.Eof
Response.Write rs("name") & "<br>"
rs.Movenext
Loop
' 关闭Connection对象
db.Close
Set db=nothing
%>
</body>
</html>
说明:
首先在sdbbs数据库中依据表article建立一个查询authorname1,SQL语句为select * from article where name='张三',然后在ASP程序中指明查询信息为sdbbs数据库中的查询authorname1。由此例可见,利用查询就是把通常放在ASP中的SQL语句事先写在数据库的查询中,从而加快查询操作的速度。
在Access 数据库中建立查询的步骤如下:
(1)打开数据库,选择【查询】标签,如图所示。

(2)选择【在设计视图中创建查询】,在弹出的【显示表】对话框中单击【关闭】按钮,如图所示。

(3)打开【视图】菜单,选择【SQL视图】菜单项,弹出【选择查询】对话框。
(4)在【选择查询】对话框中直接输入SQL语句,指明查询表名及查询条件,如图所示。

(5)关闭对话框,在随之弹出的【另存为】对话框中输入所建立的查询名,如图所示。

范例6-22:参数查询,通过表单输入所要查询的姓名
<html>
<head>
<title>参数查询范例</title>
</head>
<body>
<form method="POST" action="sample6-22-2.asp">
<p><input type="text" name="prm_value" size="20"></p>
<p><input type="submit" value="提交" name="B1"></p>
</form>
</body>
</html>
sample6-22-2.asp代码如下:
<%
' 建立Connection对象
Set db=Server.CreateObject("ADODB.Connection")
db.Open"zbsdbbszb"
' 建立Command对象
Set cmd= Server.CreateObject("ADODB.Command")
cmd.ActiveConnection=db
' 建立一个参数对象prm,并将该对象加入到参数集合中
Dim prm,prm_name,prm_type,prm_direction,prm_size,prm_value
prm_name="input_name" ' 参数名称,在authorname2中的变量
prm_type=200 ' 参数类型,200表示是变长字符串
prm_direction=1 ' 参数方向,1表示输出
prm_size=10 ' 参数大小,最大字节数为10
prm_value=Request.Form("prm_value") ' 获取表单元素值,即传入的参数值
Set prm=cmd.CreateParameter(prm_name,prm_type,prm_direction,prm_size,prm_value)
cmd.Parameters.Append prm ' 将参数对象prm加入到参数集合中
' 执行查询authorname2
cmd.CommandType=4 ' 指定查询信息是查询名
cmd.CommandText= "authorname2" ' 指定查询名称
Set rs=cmd.Execute
Do While Not rs.Eof
Response.Write rs("name") & "<br>"
rs.Movenext
Loop
' 关闭Connection对象
db.Close
Set db=nothing
%>
 点击浏览sample6-22.asp效果。
说明:
▲ 在参数查询中要运用Parameters参数集合和Parameter参数对象。
▲ 在数据库里依据表article建立查询authorname2,其SQL语句为
SELECT * FROM article WHERE name=input_name;
▲ 通过表单文本框输入查询参数。
通过查询来进行数据库信息查询,设计起来虽然麻烦一些,但是在数据量比较大的数据库中利用查询进行记录的查找可以明显加快操作速度。对于一个设计比较成熟的系统,为了追求高效率,可以把一些常用的查询事先在数据库里设置好,然后在ASP程序中加以调用。
下面介绍Recordset记录集对象。

 

FLASH版演示教案:
FLASH版演示教案
实训作业:
假设有数据库guest.mdb,数据表为guest,表中有字段name。设计一个简单的程序,采用参数查询方法查询name。
在线测试:
在线测试
备注:

Command命令对象虽然是ASP三大主要对象之一,但实际用的比较少,它的许多功能可以通过Connection连接对象或是Recordset记录集对象来实现。

附:
提高部分    

~ 江西信息应用技术职业学院信息技术系制作 ~

E-Mail:lxlz2050@163.net Tel:0791-5275546