<p> Coonamd 对象定义了将对数据源执行的命令,可以用于查询数据库表并返回一个记录集,也可以用于对数据库表进行添加、更改和删除操作。 </p><p> 一、使用Command 对象的步骤:</p><p> 当在 ASP 页面中使用 Command 对象处理数据时,应首先设置命令类型、命令文本以及相关的活动数据库连接等,并通过 Parameter 对象传递命令参数,然后通过调用 Execute 方法来执行 SQL 语句或调用存储过程,以完成数据库记录的检索、添加、更改和删除任务。其步骤如下:</p><p> 1、使用 ActiveCommand 属性设置相关的数据库连接;</p><p> 2、使用 CommandType 属性设置命令类型;</p><p> 3、使用 CommandText 属性定义命令(例如SQL语句)的可执行文本;</p><p> 4、使用 CommandTimeout 属性设置命令超时时间;</p><p> 5、使用 Execute 方法执行命令。</p><p> 二、Command 对象的属性:</p><table><tr><td>属性</td><td>描述/ 格式 / 注释</td></tr><tr><td>ActiveConnection</td><td><table><tr><td>1、该属性表明指定的 Command 对象当前所属哪一个 Connection 对象。 <p> 2、该属性设置和返回包含了定义连接或 Connection 对象的字符串。</p><p> 3、该属性为可读可写。 </p></td></tr><tr><td>Setcmd.ActiveConnection=cnn</td></tr><tr><td>1、cmd :已定义的 Command 对象;2、cnn :要连接的 Connection 对象。</td></tr></table></td></tr><tr><td>CommandType</td><td><table><tr><td>该属性指定命令类型以优化性能,该属性可以设置和返回以下某个值: <p> 1、adCmdText :表示处理的是一个 SQL 语句;</p><p> 2、adCmdTable :表示处理的是一个表;</p><p> 3、adCmdStoredProc :表示处理的是一个存储过程;</p><p> 4、adCmdUnknow :表示不能识别,它是默认值。</p></td></tr><tr><td>如:cmd.CommandType=adCmdText</td></tr><tr><td>1、cmd :已定义的 Command 对象;2、adCmdText :表示处理的是一个 SQL 语句。</td></tr></table></td></tr><tr><td>CommandText</td><td><table><tr><td>该属性定义了将要发送给提供程序的命令文本。它可以设置和返回包含提供程序命令的字符串值,例如:SQL 查询语句、表名称或存储的过程调用。</td></tr><tr><td>cmd.CommandText=SQLString</td></tr><tr><td>1、cmd :已定义的 Command 对象;2、SQL 查询字符串(即一条 SQL 语句)。</td></tr></table></td></tr><tr><td>CommandTimeout</td><td><table><tr><td>该属性指定在终止尝试或产生错误之前执行命令期间需等待的时间(单位为秒)。默认值为30秒。</td></tr><tr><td>cmd.CommadnTimeout=N</td></tr><tr><td>N:需要设置的秒数。</td></tr></table></td></tr></table> <p> 三、Command 对象的方法----Execute</p><p> 该方法执行在 CommandText 属性中指定的查询。语法格式分为以下两种形式。</p><p> 1、对于按行返回的 Command :</p><code>Set recordset=command.Execute(RecordsAffected,Parameters,Options)</code><p> 2、对于不按行返回的 Command :</p><code>command.Execute RecordsAffected,Parameters,Options</code><p> 其中参数 RecordsAffected 为提供程序返回操作所影响的记录数录。Rarameters 为使用 SQL 语句传送的参数值。Options 指示提供程序如何对 Command 对象的 CommandText 属性赋值。</p><p> 四、使用 Parameters 集合</p><p> Command 对象具有由 Parameter 对象组成的 Parameters 集合,Parameter 对象代表与基于参数化查询或存储过程的 Command 对象相关联的参数或自变量。通过创建 Parameter 对象并添加到 Parameter 集合中,可以向参数化查询传递所需要的数据。使用 Parameter 集合的步骤如表下:</p>使用 Parameter 集合的步骤 <table><tr><td>步骤</td><td>描述 / 格式 / 注释</td></tr><tr><td><p> 1、</p><p> 创建 Parameter 对象</p></td><td><table><tr><td>使用 CreateParameter 方法可以用指定的名称、类型、方向、大小和值创建新的 Parameter 对象。</td></tr><tr><td>Set parameter=command.CreateParameter(Name,Type,Direction,Size,Value)</td></tr><tr><td>其中参数Name 指定 Parameter 对象的名称。 <p> Type 指定 Parameter 对象的数据类型,可以使用符号常量为其赋值。如:</p><p> * adDate :表示日期值;</p><p> * adInteger :表示4字节的带符号整数;</p><p> * adDecimal :具有固定精度和范围的精确数字值;</p><p> * adDouble :双精度浮点值;</p><p> * adVarChar :表示字符串值。</p><p> Direction 参数指定 Parameter 对象类型,可以设置或返回以下某个值:</p><p> * adParamInput :指定为输入参数(默认值);</p><p> * adParamOutput :指定为输出参数;</p><p> * adParamInputOutput :指定为输入和输出参数;</p><p> * adParamReturnValue :指定为返回值。</p><p> * Size 指定参数值最大长度,能字符或字节数为单位。</p><p> * Value 指定 Parameter 对象的值。</p></td></tr></table></td></tr><tr><td><p> 2、</p><p> 将Parameter对象添加到 parameters 集合</p></td><td><table><tr><td>使用 Addend 方法将创建好的 Parameter 对象添加到 Parameters 集合中。</td></tr><tr><td>comman.Parameters.Addend object</td></tr><tr><td>参数指定 Parameter 对象的名称。</td></tr></table></td></tr><tr><td><p> 3、</p><p> 给参数赋值</p></td><td><table><tr><td>使用 Parameter 对象的 Value 对参数赋值。</td></tr><tr><td>PrmName.Value=ParameterValue</td></tr><tr><td>参数 ParameterValue 为要赋给参数的值。</td></tr></table></td></tr><tr><td><p> 4、</p><p> 删除 Parameter 对象</p></td><td><table><tr><td>使用 Parameter 方法可以将 Parameter 对象从 Parameters 集合中删除。</td></tr><tr><td>Parameter.Delete Index</td></tr><tr><td>Index 参数指定要删除的 Parameter 对象的名称,或该对象在 Parameters 集合中的位置索引值。</td></tr></table></td></tr></table><p> 五、Command 对象的应用实例</p><p> 1、这是一个简单的员工基本情况管理系统,其功能有:1)、添加员工资料;2)、更改员工资料;3)、删除员工资料,检索员工资料。它包含着七个页面和一个数据库。分别为:</p><p> 1)、主页面:index.asp</p><p> 2)、添加数据页面:add.htm</p><p> 3)、保存添加数据页面:add.asp</p><p> 4)、更改数据页面:Update.asp</p><p> 5)、保存更改数据页面:Update1.asp</p><p> 6)、删除记录页面:Detele.asp</p><p> 7)、检索员工资料页面:shousho.asp</p><p> 8)、数据库:RSGL.mdb.用到该数据库中的”员工基本情况表“。</p><p> 2、各页面的代码如下:</p><p> 1)、主页面:index.asp。该页面的功能有:</p><p> a、创建两个对象,Connectiion对象和Recordset对象,其目的是连接数据库和返回一个记录集;</p><p> b、创建一个表格,使do while循环语句将各条记录在表格中显示出来;</p><p> c、创建三个超连接,一个用以连接添加数据页面,另一个通过指定的员工姓名连接到更改数据页面,还有一个通过指定的员工姓名连接到删除页面。</p><code><% @ Language="VBScript" %><br /><html><br /><head><title>员工基本情况管理系统</title></head><br /><body background="../../../images/bj1.jpg"><br /><%<br />'****************创建两个对象(连接对象、记录集对象)*********************<br />dim cnn,rst<br />set cnn=Server.CreateObject("ADODB.Connection")<br />set rst=Server.CreateObject("ADODB.Recordset")<br />'指定连接字符串,<br />cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")<br />cnn.Open<br />sSQL="select * from 员工基本情况表"<br />'rst.Open sSQL,cnn,1,1<br />set rst=cnn.Execute(sSQL,,adCmdText)<br />%><br /><!--************创建一个表格,用以显示数据库中的各条记录***********--><br /><table align="center" border="1"><br /><caption><h3>教职员工基本信息表</h3></caption><br /><tr colspan="5"><td><a href="shousho.asp">查询记录</a>||<a href="add.htm">添加记录</a></td></tr><br /><!--显示各字段名--><br /><tr><td align="center">员工姓名</td><td align="center">所在部门</td><td align="center">家庭住址</td><td align="center">家庭电话</td><td align="center">Email</td><td align="center">状态</td><br /><%<br />'使用do while循环语句将各条记录显示出来。<br />do while Not rst.eof<br />t1=rst("员工姓名")<br />t2=rst("所在部门")<br />t3=rst("家庭住址")<br />t4=rst("家庭电话")<br />t5=rst("Email")<br />tt="<tr align='center'><td>" & t1 & "</td><td>" &t2& "</td><td>" &t3& "</td><td>" &t4& "</td><td>" &t5& "</td><td>"<br />tt=tt & "<a href=Update.asp?id=" & t1 & ">修改</a><a href=Delete.asp?id=" & t1 & ">||删除</a></td></tr>"<br />response.write tt<br />rst.MoveNext<br />loop<br />cnn.Close<br />Set cnn=Nothing<br />%><br /></table><br /></body><br /></html></code> </p><p> 2)、添加数据页面:add.htm 。本页面由一个表单组成,其功能是向保存添加数据页面(add.asp)提交数据。</p><p> <code><html><br /><head><title>添加记录</title></head><br /><body background="../../../images/bj1.jpg"><br /><div align="center"><br /><form name="form1" method="post" action="add.asp"><br /><table align="center" border="1"><br /><tr><td colspan="2" align="center">员工基本情况表</td></tr><br /><tr><td align="right">员工姓名:</td><br /><td><input type="text" name="txtName"></td></tr><br /><tr><td align="right">所在部门:</td><br /><td><input type="text" name="txtDepartment"></td></tr><br /><tr><td align="right">家庭住址:</td><br /><td><input type="text" name="txtAddr"></td></tr><br /><tr><td align="right">家庭电话:</td><br /><td><input type="text" name="txtTel"></td></tr><br /><tr><td align="right">Email:</td><br /><td><input type="text" name="txtemail"></td></tr><br /><tr><td align="center"><input type="submit" value="提交"></td><br /><td align="center"><input type="reset" value="全部重写"></td></tr><br /></table><br /></form><br /></div><br /></body><br /></html></code><p> 3)、保存添加数据页面:add.asp。该页面的功能有:a)、使用Request对象获取从add.htm页面提交的值;b)、创建三个对象(连接对象、记录集对象和指令对象)和五个参数,通过调用参数执行INSERT插入命令。</p><code><% @ Language="VBScript" %><br /><html><br /><head><br /><title>添加记录</title><br /></head><br /><body background="../../../images/bj1.jpg"><br /><!-- #include virtual ="/adovbs.inc" --><br /><%<br />'****************创建三个对象(连接对象、记录集对象和指令对象)和五个参数*********************<br />dim cnn,rst,cmd<br />set cnn=Server.CreateObject("ADODB.Connection")<br />set rst=Server.CreateObject("ADODB.Recordset")<br />set cmd=Server.CreateObject("ADODB.Command")<br />'指定连接字符串,<br />cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")<br />cnn.Open<br />'设置ActiveConnection属性,使Command对象与打开的连接相关联<br />set cmd.ActiveConnection=cnn<br />'指定传送给数据提供者的命令文本是一条SQL语言。<br />cmd.CommandType=adCmdText<br />cmd.CommandText="INSERT INTO 员工基本情况表(员工姓名,所在部门,家庭住址,家庭电话,Email) values(?,?,?,?,?)"<br />'创建五个Parameter对象<br />set PrmName=cmd.CreateParameter("员工姓名",adVarChar,adParamInput,10)<br />set PrmDepartment=cmd.CreateParameter("所在部门",adVarChar,adParamInput,10)<br />set PrmAddr=cmd.CreateParameter("家庭住址",adVarChar,adParamInput,12)<br />set PrmTel=cmd.CreateParameter("家庭电话",adVarChar,adParamInput,15)<br />set PrmEmail=cmd.CreateParameter("Email",adVarChar,adParamInput,20)<br />'将parameter对象添加到Parameters集合中。<br />cmd.Parameters.Append prmName<br />cmd.Parameters.Append prmDepartment<br />Cmd.Parameters.Append prmAddr<br />Cmd.Parameters.Append prmTel<br />Cmd.Parameters.Append prmEmail<br />'使用表单值设置参数值<br />PrmName.Value=Request.Form("txtName")<br />PrmDepartment.Value=Request.Form("txtDepartment")<br />PrmAddr.Value=Request.Form("txtAddr")<br />PrmTel.Value=Request.Form("txtTel")<br />PrmEmail.Value=Request.Form("txtEmail")<br />'执行INSERT插入命令<br />cmd.Execute<br />%><br /><!--用表格显示记录。--><br /><table align="center" border="1"><br /><tr><td colspan="2" align="center">员工基本情况表</td></tr><br /><tr><td align="right" width="130">员工姓名:</td><br /><td width="200"><%=prmName.Value %></td></tr><br /><tr><td align="right">所在部门:</td><br /><td><%=prmDepartment.Value %></td></tr><br /><tr><td align="right">家庭住址:</td><br /><td><%=prmAddr.Value %></td></tr><br /><tr><td align="right">家庭电话:</td><br /><td><%=prmTel.Value %></td></tr><br /><tr><td align="right">Email:</td><br /><td><%=prmEmail.Value %></td></tr><br /></table><br /><center><p><p><p><br /><hr width="505" color="#cc9999"><br /> <p><p><h3>记录添加成功!</h3><br /><p><a href="add.htm">返回记录添加表单</a>||<a href="index.asp">返回主页</a><br /></center><br /></body><br /></html></code><p> 4)、更改数据页面:Update.asp。该页面的功能有:a、创建两个对象,Connectiion对象和Recordset对象,其目的是连接数据库和返回一个记录集;b、创建一个表单,其目的是提交更改过的数据。</p><code>cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")<br />cnn.Open<br />sSQL="select * from 员工基本情况表 where 员工姓名='" & a & "'"<br />'rst.Open sSQL,cnn,1,1<br />set rst=cnn.Execute(sSQL,,adCmdText)<br />%><br /><html><br /><head><title>更改记录</title></head><br /><body background="../../../images/bj1.jpg"><br /><div align="center"><br /><!--*****************创建一个表单****************************************--><br /><form name="form1" method="post" action="Update1.asp"><br /><table align="center" border="1"><br /><tr><td colspan="2" align="center">员工基本情况表</td></tr><br /><tr><td align="right">员工姓名:</td><br /><td><input type="text" name="txtName" value=<%=rst("员工姓名")%> readonly></td></tr><br /><tr><td align="right">所在部门:</td><br /><td><input type="text" name="txtDepartment" value=<%=rst("所在部门")%>></td></tr><br /><tr><td align="right">家庭住址:</td><br /><td><input type="text" name="txtAddr" value=<%=rst("家庭住址")%>></td></tr><br /><tr><td align="right">家庭电话:</td><br /><td><input type="text" name="txtTel" value=<%=rst("家庭电话")%>></td></tr><br /><tr><td align="right">Email:</td><br /><td><input type="text" name="txtemail" value=<%=rst("Email")%>></td></tr><br /><tr><td align="center"><input type="submit" value="提交"></td><br /><td align="center"><input type="reset" value="全部重写"></td></tr><br /></table><br /></form><br /></div><br /></body><br /></html></code><p> 5)、保存更改数据页面:Update2.asp。 该页面的功能有:a)、使用Request对象获取从Update.asp页面提交的值;b)、创建二个对象(连接对象、记录集对象);c)、通过表格显示更改后的记录。</p><code><% @ Language="VBScript" %><br /><%<br />'*****************从提交表单中提取数值***************************<br />Dim Name,Department,Addr,Tel,Email<br />Name=Trim(Request.Form("txtName"))<br />Department=Trim(Request.Form("txtDepartment"))<br />Addr=Trim(Request.Form("txtAddr"))<br />Tel=Trim(Request.Form("txtTel"))<br />Email=Trim(Request.Form("txtEmail"))<br />%><br /><html><br /><head><br /><title>更改记录</title><br /></head><br /><body><br /><!-- #include virtual ="/adovbs.inc" --><br /><%<br />'****************创建二个对象(连接对象、记录集对象)*********************<br />dim cnn,rst,cmd<br />set cnn=Server.CreateObject("ADODB.Connection")<br />set rst=Server.CreateObject("ADODB.Recordset")<br />'指定连接字符串,<br />cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")<br />cnn.Open<br />sSQL="update 员工基本情况表 set 所在部门='" & Department & "',家庭住址='" & Addr & "',家庭电话='" & Tel & "',Email='" & Email & "' where 员工姓名='" & name & "'"<br />rst.Open sSQL,cnn,1,2<br />set rst=nothing<br />%><br /><!--**************************用表格显示记录。**********************--><br /><table align="center" border="1"><br /><tr><td colspan="2" align="center">员工基本情况表</td></tr><br /><tr><td align="right" width="130" align="center">员工姓名:</td><br /><td width="200"><%=Name %></td></tr><br /><tr><td align="right">所在部门:</td><br /><td><%=Department %></td></tr><br /><tr><td align="right">家庭住址:</td><br /><td><%=Addr %></td></tr><br /><tr><td align="right">家庭电话:</td><br /><td><%=Tel %></td></tr><br /><tr><td align="right">Email:</td><br /><td><%=Email %></td></tr><br /></table><br /><center><br /><p><hr width="505" color="#cc9999"><br /><h3>记录更改成功!</h3><br /><p><a href="index.asp">返回首页</a><br /></center><br /></body><br /></html></code><p> 6)、删除数据页面:Detele.asp。 a)、使用Request对象获取要删除的员工姓名;b)、创建三个对象(连接对象、记录集对象和指令对象)和一个参数,通过参数指定的值删除记录;c)、给出删除成功提示框。</p><code><title>更改记录</title><br /></head><br /><body background="../../../images/bj1.jpg"><br /><!-- #include virtual ="/adovbs.inc" --><br /><%<br />'****************创建三个对象(连接对象、记录集对象和指令对象)和一个参数*********************<br />dim cnn,rst,cmd<br />set cnn=Server.CreateObject("ADODB.Connection")<br />set rst=Server.CreateObject("ADODB.Recordset")<br />set cmd=Server.CreateObject("ADODB.Command")<br />'指定连接字符串,<br />cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")<br />cnn.Open<br />'设置ActiveConnection属性,使Command对象与打开的连接相关联<br />set cmd.ActiveConnection=cnn<br />'指定传送给数据提供者的命令文本是一条SQL语言。<br />cmd.CommandType=adCmdText<br />cmd.CommandText="Delete from 员工基本情况表 where 员工姓名=? "<br />'创建一个Parameter对象<br />set PrmName=cmd.CreateParameter("员工姓名",adVarChar,adParamInput,10)<br />'将parameter对象添加到Parameters集合中。<br />cmd.Parameters.Append prmName<br />'使用表单值设置参数值<br />PrmName.Value=Name<br />'执行Delete删除命令<br />cmd.Execute<br />%><br /> <p><p><p><br /><hr width="505" color="#cc9999"><br /><center><h3>记录删除成功!</h3><br /><p><a href="index.asp">返回主页</a><br /></center><br /></body><br /></html></code><p> 7)、检索员工资料页面 :shousho.asp。a)、使用一个列表框用以提交检索的条件;b)、创建三个对象(连接对象、记录集对象和指令对象)和一个参数,使用 Parameter 对象的 Value 属性将表单提交的值赋给参数;c)、使用for 循环语句将检索出的记录集中的每一条记录都通过表格显示出来。</p><code><% @ Language="VBScript" %><br /><html><br /><head><br /><title>使用参数化检索记录</title><br /></head background="../../../images/bj1.jpg><br /><body background="../../../images/bj1.jpg"><br /><!--*************开始创建表单*****************--><br /><div align="center"><br /><p>查询各部门员工的基本情况<br /><form name="form1" method="post" action="Shousho.asp"><br />选择部门:<br /><select size="1" name="department"><br /><option selected value="all">全部记录</option><br /><option value="教务处">教务处</option><br /><option value="英语教研室">英语教研室</option><br /><option value="语文教研室">语文教研室</option><br /><option value="数学教研室">数学教研室</option><br /><option value="财务处">财务处</option><br /></select><br /><input type="submit" value="提交">||<a href="index.asp">返回主页</a><br /></form><br /><!-- #include virtual ="/adovbs.inc" --><br /><%<br />'****************创建三个对象(连接对象、记录集对象和指令对象)和一个参数*********************<br />dim cnn,rst,cmd,i<br />set cnn=Server.CreateObject("ADODB.Connection")<br />set rst=Server.CreateObject("ADODB.Recordset")<br />set cmd=Server.CreateObject("ADODB.Command")<br />'指定连接字符串,<br />cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("../rsgl.mdb")<br />cnn.Open<br />'创建一个Parameter对象<br />set PrmDepartment=cmd.CreateParameter("所在部门",adVarChar,adParamInput,10)<br />'将Parameter对象添加到Prmameters集合中<br />cmd.Parameters.Append prmDepartment<br />'将用户提交的所在部门名称作为parameter对象的值<br />prmDepartment.Value=Request.Form("department")<br />'指定传送给数据提供者的命令文本是一条SQL语言。<br />cmd.CommandType=adCmdText<br />'设置ActiveConnection属性,使Command对象与打开的连接相关联<br />set cmd.ActiveConnection=cnn<br />'******如果没有提交所在部门名称,或选择所有部门,则显示所有记录,否则按参数进行查询。****************<br />if PrmDepartment.Value="" or Request.Form("department")="all" then<br />cmd.CommandText="select * from 员工基本情况表"<br />Else<br />'便用参数化查询语句作为命令文本<br />cmd.CommandText="select * from 员工基本情况表 where 所在部门=?"<br />end if<br />'向服务器发送SQL语句并返回一个记录集<br />Set rst=cmd.Execute<br />'-----------如果记录集不存在,则显示一条提示信息,否则,列出符合条件的记录。----------<br />if rst.EOF then<br />%><br /><p><b>没有找到符合条件的记录!</b></p><br /><% else %><br /><table border="1"><br /><tr><br /><!--用for 循环语句列出字段名。--><br /><% for i=0 to rst.Fields.Count-1 %><br /><th><%=rst(i).Name %></th><br /><% next %><br /><!--用while条件语句列出每条记录--><br /><% while not rst.eof %><br /><tr><br /><%<br />'用for循环语句列出某条记录的各字段的值。<br />for i=0 to rst.Fields.Count-1<br />'如果字段值为空,则显示一个空格<br />if IsNull(rst(i)) then<br />%><br /><td> </td><br /><% else %><br /><td nowrap><% =rst(i) %></td><br /><% end if %><br /><% next %><br /></tr><br /><%<br />rst.MoveNext<br />wend<br />%><br /></table><br /><% end if %><br /></div><br /></body><br /></html></code><p> <img src="/content/uploadfile/200805/2008053117005017.gif" onclick="get_larger(this)" /><a href="http://tech.ddvip.com/2006-10/11618046459861.html" target="_blank">查看全套"ASP入门基础"教程>>>>></a></p>