Coonamd 對(duì)象定義了將對(duì)數(shù)據(jù)源執(zhí)行的命令,可以用于查詢數(shù)據(jù)庫(kù)表并返回一個(gè)記錄集,也可以用于對(duì)數(shù)據(jù)庫(kù)表進(jìn)行添加、更改和刪除操作。
一、使用Command 對(duì)象的步驟:
當(dāng)在 ASP 頁(yè)面中使用 Command 對(duì)象處理數(shù)據(jù)時(shí),應(yīng)首先設(shè)置命令類型、命令文本以及相關(guān)的活動(dòng)數(shù)據(jù)庫(kù)連接等,并通過(guò) Parameter 對(duì)象傳遞命令參數(shù),然后通過(guò)調(diào)用 Execute 方法來(lái)執(zhí)行 SQL 語(yǔ)句或調(diào)用存儲(chǔ)過(guò)程,以完成數(shù)據(jù)庫(kù)記錄的檢索、添加、更改和刪除任務(wù)。其步驟如下:
1、使用 ActiveCommand 屬性設(shè)置相關(guān)的數(shù)據(jù)庫(kù)連接;
2、使用 CommandType 屬性設(shè)置命令類型;
3、使用 CommandText 屬性定義命令(例如SQL語(yǔ)句)的可執(zhí)行文本;
4、使用 CommandTimeout 屬性設(shè)置命令超時(shí)時(shí)間;
5、使用 Execute 方法執(zhí)行命令。
二、Command 對(duì)象的屬性:

三、Command 對(duì)象的方法----Execute
該方法執(zhí)行在 CommandText 屬性中指定的查詢。語(yǔ)法格式分為以下兩種形式。
1、對(duì)于按行返回的 Command :
Set recordset=command.Execute(RecordsAffected,Parameters,Options)
2、對(duì)于不按行返回的 Command :
command.Execute RecordsAffected,Parameters,Options
其中參數(shù) RecordsAffected 為提供程序返回操作所影響的記錄數(shù)錄。Rarameters 為使用 SQL 語(yǔ)句傳送的參數(shù)值。Options 指示提供程序如何對(duì) Command 對(duì)象的 CommandText 屬性賦值。
四、使用 Parameters 集合
Command 對(duì)象具有由 Parameter 對(duì)象組成的 Parameters 集合,Parameter 對(duì)象代表與基于參數(shù)化查詢或存儲(chǔ)過(guò)程的 Command 對(duì)象相關(guān)聯(lián)的參數(shù)或自變量。通過(guò)創(chuàng)建 Parameter 對(duì)象并添加到 Parameter 集合中,可以向參數(shù)化查詢傳遞所需要的數(shù)據(jù)。使用 Parameter 集合的步驟如表下:
使用Parameter 集合的步驟

五、Command 對(duì)象的應(yīng)用實(shí)例
1、這是一個(gè)簡(jiǎn)單的員工基本情況管理系統(tǒng),其功能有:1)、添加員工資料;2)、更改員工資料;3)、刪除員工資料,檢索員工資料。它包含著七個(gè)頁(yè)面和一個(gè)數(shù)據(jù)庫(kù)。分別為:
1)、主頁(yè)面:index.asp
2)、添加數(shù)據(jù)頁(yè)面:add.htm
3)、保存添加數(shù)據(jù)頁(yè)面:add.asp
4)、更改數(shù)據(jù)頁(yè)面:Update.asp
5)、保存更改數(shù)據(jù)頁(yè)面:Update1.asp
6)、刪除記錄頁(yè)面:Detele.asp
7)、檢索員工資料頁(yè)面:shousho.asp
8)、數(shù)據(jù)庫(kù):RSGL.mdb.用到該數(shù)據(jù)庫(kù)中的”員工基本情況表“。
2、各頁(yè)面的代碼如下:
1)、主頁(yè)面:index.asp。該頁(yè)面的功能有:
a)、創(chuàng)建兩個(gè)對(duì)象,Connectiion對(duì)象和Recordset對(duì)象,其目的是連接數(shù)據(jù)庫(kù)和返回一個(gè)記錄集;
b)、創(chuàng)建一個(gè)表格,使do while循環(huán)語(yǔ)句將各條記錄在表格中顯示出來(lái);
c)、創(chuàng)建三個(gè)超連接,一個(gè)用以連接添加數(shù)據(jù)頁(yè)面,另一個(gè)通過(guò)指定的員工姓名連接到更改數(shù)據(jù)頁(yè)面,還有一個(gè)通過(guò)指定的員工姓名連接到刪除頁(yè)面。
% @ Language="VBScript" %>
html>
head>title>員工基本情況管理系統(tǒng)/title>/head>
body background="../../../images/bj1.jpg">
%
'****************創(chuàng)建兩個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象)*********************
dim cnn,rst
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
'指定連接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" server.MapPath("../rsgl.mdb")
cnn.Open
sSQL="select * from 員工基本情況表"
'rst.Open sSQL,cnn,1,1
set rst=cnn.Execute(sSQL,,adCmdText)
%>
!--************創(chuàng)建一個(gè)表格,用以顯示數(shù)據(jù)庫(kù)中的各條記錄***********-->
table align="center" border="1">
caption>h3>教職員工基本信息表/h3>/caption>
tr colspan="5">td>a href="shousho.asp">查詢記錄/a>||a href="add.htm">添加記錄/a>/td>/tr>
!--顯示各字段名-->
tr>td align="center">員工姓名/td>td align="center">所在部門(mén)/td>td align="center">家庭住址/td>td align="center">家庭電話/td>td align="center">Email/td>td align="center">狀態(tài)/td>
%
'使用do while循環(huán)語(yǔ)句將各條記錄顯示出來(lái)。
do while Not rst.eof
t1=rst("員工姓名")
t2=rst("所在部門(mén)")
t3=rst("家庭住址")
t4=rst("家庭電話")
t5=rst("Email")
tt="tr align='center'>td>" t1 "/td>td>" t2 "/td>td>" t3 "/td>td>" t4 "/td>td>" t5 "/td>td>"
tt=tt "a href=Update.asp?id=" t1 ">修改/a>a href=Delete.asp?id=" t1 ">||刪除/a>/td>/tr>"
response.write tt
rst.MoveNext
loop
cnn.Close
Set cnn=Nothing
%>
/table>
/body>
/html>
2)、添加數(shù)據(jù)頁(yè)面:add.htm 。
本頁(yè)面由一個(gè)表單組成,其功能是向保存添加數(shù)據(jù)頁(yè)面(add.asp)提交數(shù)據(jù)。
html>
head>title>添加記錄/title>/head>
body background="../../../images/bj1.jpg">
div align="center">
form name="form1" method="post" action="add.asp">
table align="center" border="1">
tr>td colspan="2" align="center">員工基本情況表/td>/tr>
tr>td align="right">員工姓名:/td>
td>input type="text" name="txtName">/td>/tr>
tr>td align="right">所在部門(mén):/td>
td>input type="text" name="txtDepartment">/td>/tr>
tr>td align="right">家庭住址:/td>
td>input type="text" name="txtAddr">/td>/tr>
tr>td align="right">家庭電話:/td>
td>input type="text" name="txtTel">/td>/tr>
tr>td align="right">Email:/td>
td>input type="text" name="txtemail">/td>/tr>
tr>td align="center">input type="submit" value="提交">/td>
td align="center">input type="reset" value="全部重寫(xiě)">/td>/tr>
/table>
/form>
/div>
/body>
/html>
3)、保存添加數(shù)據(jù)頁(yè)面:add.asp。
該頁(yè)面的功能有:
a)、使用Request對(duì)象獲取從add.htm頁(yè)面提交的值;
b)、創(chuàng)建三個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象和指令對(duì)象)和五個(gè)參數(shù),通過(guò)調(diào)用參數(shù)執(zhí)行INSERT插入命令。
% @ Language="VBScript" %>
html>
head>
title>添加記錄/title>
/head>
body background="../../../images/bj1.jpg">
!-- #include virtual ="/adovbs.inc" -->
%
'****************創(chuàng)建三個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象和指令對(duì)象)和五個(gè)參數(shù)*********************
dim cnn,rst,cmd
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
set cmd=Server.CreateObject("ADODB.Command")
'指定連接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" server.MapPath("../rsgl.mdb")
cnn.Open
'設(shè)置ActiveConnection屬性,使Command對(duì)象與打開(kāi)的連接相關(guān)聯(lián)
set cmd.ActiveConnection=cnn
'指定傳送給數(shù)據(jù)提供者的命令文本是一條SQL語(yǔ)言。
cmd.CommandType=adCmdText
cmd.CommandText="INSERT INTO 員工基本情況表(員工姓名,所在部門(mén),家庭住址,家庭電話,Email) values(?,?,?,?,?)"
'創(chuàng)建五個(gè)Parameter對(duì)象
set PrmName=cmd.CreateParameter("員工姓名",adVarChar,adParamInput,10)
set PrmDepartment=cmd.CreateParameter("所在部門(mén)",adVarChar,adParamInput,10)
set PrmAddr=cmd.CreateParameter("家庭住址",adVarChar,adParamInput,12)
set PrmTel=cmd.CreateParameter("家庭電話",adVarChar,adParamInput,15)
set PrmEmail=cmd.CreateParameter("Email",adVarChar,adParamInput,20)
'將parameter對(duì)象添加到Parameters集合中。
cmd.Parameters.Append prmName
cmd.Parameters.Append prmDepartment
Cmd.Parameters.Append prmAddr
Cmd.Parameters.Append prmTel
Cmd.Parameters.Append prmEmail
'使用表單值設(shè)置參數(shù)值
PrmName.Value=Request.Form("txtName")
PrmDepartment.Value=Request.Form("txtDepartment")
PrmAddr.Value=Request.Form("txtAddr")
PrmTel.Value=Request.Form("txtTel")
PrmEmail.Value=Request.Form("txtEmail")
'執(zhí)行INSERT插入命令
cmd.Execute
%>
!--用表格顯示記錄。-->
table align="center" border="1">
tr>td colspan="2" align="center">員工基本情況表/td>/tr>
tr>td align="right" width="130">員工姓名:/td>
td width="200">%=prmName.Value %>/td>/tr>
tr>td align="right">所在部門(mén):/td>
td>%=prmDepartment.Value %>/td>/tr>
tr>td align="right">家庭住址:/td>
td>%=prmAddr.Value %>/td>/tr>
tr>td align="right">家庭電話:/td>
td>%=prmTel.Value %>/td>/tr>
tr>td align="right">Email:/td>
td>%=prmEmail.Value %>/td>/tr>
/table>
center>p>p>p>
hr width="505" color="#cc9999">
nbsp;p>p>h3>記錄添加成功!/h3>
p>a href="add.htm">返回記錄添加表單/a>||a href="index.asp">返回主頁(yè)/a>
/center>
/body>
/html>
4)、更改數(shù)據(jù)頁(yè)面:Update.asp。該頁(yè)面的功能有:
a)、創(chuàng)建兩個(gè)對(duì)象,Connectiion對(duì)象和Recordset對(duì)象,其目的是連接數(shù)據(jù)庫(kù)和返回一個(gè)記錄集;
b)、創(chuàng)建一個(gè)表單,其目的是提交更改過(guò)的數(shù)據(jù)。
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" server.MapPath("../rsgl.mdb")
cnn.Open
sSQL="select * from 員工基本情況表 where 員工姓名='" a "'"
'rst.Open sSQL,cnn,1,1
set rst=cnn.Execute(sSQL,,adCmdText)
%>
html>
head>title>更改記錄/title>/head>
body background="../../../images/bj1.jpg">
div align="center">
!--*****************創(chuàng)建一個(gè)表單****************************************-->
form name="form1" method="post" action="Update1.asp">
table align="center" border="1">
tr>td colspan="2" align="center">員工基本情況表/td>/tr>
tr>td align="right">員工姓名:/td>
td>input type="text" name="txtName" value=%=rst("員工姓名")%> readonly>/td>/tr>
tr>td align="right">所在部門(mén):/td>
td>input type="text" name="txtDepartment" value=%=rst("所在部門(mén)")%>>/td>/tr>
tr>td align="right">家庭住址:/td>
td>input type="text" name="txtAddr" value=%=rst("家庭住址")%>>/td>/tr>
tr>td align="right">家庭電話:/td>
td>input type="text" name="txtTel" value=%=rst("家庭電話")%>>/td>/tr>
tr>td align="right">Email:/td>
td>input type="text" name="txtemail" value=%=rst("Email")%>>/td>/tr>
tr>td align="center">input type="submit" value="提交">/td>
td align="center">input type="reset" value="全部重寫(xiě)">/td>/tr>
/table>
/form>
/div>
/body>
/html>
5)、保存更改數(shù)據(jù)頁(yè)面:Update2.asp。
該頁(yè)面的功能有:
a)、使用Request對(duì)象獲取從Update.asp頁(yè)面提交的值;
b)、創(chuàng)建二個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象);
c)、通過(guò)表格顯示更改后的記錄。
% @ Language="VBScript" %>
%
'*****************從提交表單中提取數(shù)值***************************
Dim Name,Department,Addr,Tel,Email
Name=Trim(Request.Form("txtName"))
Department=Trim(Request.Form("txtDepartment"))
Addr=Trim(Request.Form("txtAddr"))
Tel=Trim(Request.Form("txtTel"))
Email=Trim(Request.Form("txtEmail"))
%>
html>
head>
title>更改記錄/title>
/head>
body>
!-- #include virtual ="/adovbs.inc" -->
%
'****************創(chuàng)建二個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象)*********************
dim cnn,rst,cmd
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
'指定連接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" server.MapPath("../rsgl.mdb")
cnn.Open
sSQL="update 員工基本情況表 set 所在部門(mén)='" Department "',家庭住址='" Addr "',家庭電話='" Tel "',Email='" Email "' where 員工姓名='" name "'"
rst.Open sSQL,cnn,1,2
set rst=nothing
%>
!--**************************用表格顯示記錄。**********************-->
table align="center" border="1">
tr>td colspan="2" align="center">員工基本情況表/td>/tr>
tr>td align="right" width="130" align="center">員工姓名:/td>
td width="200">%=Name %>/td>/tr>
tr>td align="right">所在部門(mén):/td>
td>%=Department %>/td>/tr>
tr>td align="right">家庭住址:/td>
td>%=Addr %>/td>/tr>
tr>td align="right">家庭電話:/td>
td>%=Tel %>/td>/tr>
tr>td align="right">Email:/td>
td>%=Email %>/td>/tr>
/table>
center>
p>hr width="505" color="#cc9999">
h3>記錄更改成功!/h3>
p>a href="index.asp">返回首頁(yè)/a>
/center>
/body>
/html>
6)、刪除數(shù)據(jù)頁(yè)面:Detele.asp。
a)、使用Request對(duì)象獲取要?jiǎng)h除的員工姓名;
b)、創(chuàng)建三個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象和指令對(duì)象)和一個(gè)參數(shù),通過(guò)參數(shù)指定的值刪除記錄;
c)、給出刪除成功提示框。
title>更改記錄/title>
/head>
body background="../../../images/bj1.jpg">
!-- #include virtual ="/adovbs.inc" -->
%
'****************創(chuàng)建三個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象和指令對(duì)象)和一個(gè)參數(shù)*********************
dim cnn,rst,cmd
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
set cmd=Server.CreateObject("ADODB.Command")
'指定連接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" server.MapPath("../rsgl.mdb")
cnn.Open
'設(shè)置ActiveConnection屬性,使Command對(duì)象與打開(kāi)的連接相關(guān)聯(lián)
set cmd.ActiveConnection=cnn
'指定傳送給數(shù)據(jù)提供者的命令文本是一條SQL語(yǔ)言。
cmd.CommandType=adCmdText
cmd.CommandText="Delete from 員工基本情況表 where 員工姓名=? "
'創(chuàng)建一個(gè)Parameter對(duì)象
set PrmName=cmd.CreateParameter("員工姓名",adVarChar,adParamInput,10)
'將parameter對(duì)象添加到Parameters集合中。
cmd.Parameters.Append prmName
'使用表單值設(shè)置參數(shù)值
PrmName.Value=Name
'執(zhí)行Delete刪除命令
cmd.Execute
%>
nbsp;p>p>p>
hr width="505" color="#cc9999">
center>h3>記錄刪除成功!/h3>
p>a href="index.asp">返回主頁(yè)/a>
/center>
/body>
/html>
7)、檢索員工資料頁(yè)面 :shousho.asp。
a)、使用一個(gè)列表框用以提交檢索的條件;
b)、創(chuàng)建三個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象和指令對(duì)象)和一個(gè)參數(shù),使用 Parameter 對(duì)象的 Value 屬性將表單提交的值賦給參數(shù);
c)、使用for 循環(huán)語(yǔ)句將檢索出的記錄集中的每一條記錄都通過(guò)表格顯示出來(lái)。
% @ Language="VBScript" %>
html>
head>
title>使用參數(shù)化檢索記錄/title>
/head background="../../../images/bj1.jpg>
body background="../../../images/bj1.jpg">
!--*************開(kāi)始創(chuàng)建表單*****************-->
div align="center">
p>查詢各部門(mén)員工的基本情況
form name="form1" method="post" action="Shousho.asp">
選擇部門(mén):
select size="1" name="department">
option selected value="all">全部記錄/option>
option value="教務(wù)處">教務(wù)處/option>
option value="英語(yǔ)教研室">英語(yǔ)教研室/option>
option value="語(yǔ)文教研室">語(yǔ)文教研室/option>
option value="數(shù)學(xué)教研室">數(shù)學(xué)教研室/option>
option value="財(cái)務(wù)處">財(cái)務(wù)處/option>
/select>
input type="submit" value="提交">||a href="index.asp">返回主頁(yè)/a>
/form>
!-- #include virtual ="/adovbs.inc" -->
%
'****************創(chuàng)建三個(gè)對(duì)象(連接對(duì)象、記錄集對(duì)象和指令對(duì)象)和一個(gè)參數(shù)*********************
dim cnn,rst,cmd,i
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")
set cmd=Server.CreateObject("ADODB.Command")
'指定連接字符串,
cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" server.MapPath("../rsgl.mdb")
cnn.Open
'創(chuàng)建一個(gè)Parameter對(duì)象
set PrmDepartment=cmd.CreateParameter("所在部門(mén)",adVarChar,adParamInput,10)
'將Parameter對(duì)象添加到Prmameters集合中
cmd.Parameters.Append prmDepartment
'將用戶提交的所在部門(mén)名稱作為parameter對(duì)象的值
prmDepartment.Value=Request.Form("department")
'指定傳送給數(shù)據(jù)提供者的命令文本是一條SQL語(yǔ)言。
cmd.CommandType=adCmdText
'設(shè)置ActiveConnection屬性,使Command對(duì)象與打開(kāi)的連接相關(guān)聯(lián)
set cmd.ActiveConnection=cnn
'******如果沒(méi)有提交所在部門(mén)名稱,或選擇所有部門(mén),則顯示所有記錄,否則按參數(shù)進(jìn)行查詢。****************
if PrmDepartment.Value="" or Request.Form("department")="all" then
cmd.CommandText="select * from 員工基本情況表"
Else
'便用參數(shù)化查詢語(yǔ)句作為命令文本
cmd.CommandText="select * from 員工基本情況表 where 所在部門(mén)=?"
end if
'向服務(wù)器發(fā)送SQL語(yǔ)句并返回一個(gè)記錄集
Set rst=cmd.Execute
'-----------如果記錄集不存在,則顯示一條提示信息,否則,列出符合條件的記錄。----------
if rst.EOF then
%>
p>b>沒(méi)有找到符合條件的記錄!/b>/p>
% else %>
table border="1">
tr>
!--用for 循環(huán)語(yǔ)句列出字段名。-->
% for i=0 to rst.Fields.Count-1 %>
th>%=rst(i).Name %>/th>
% next %>
!--用while條件語(yǔ)句列出每條記錄-->
% while not rst.eof %>
tr>
%
'用for循環(huán)語(yǔ)句列出某條記錄的各字段的值。
for i=0 to rst.Fields.Count-1
'如果字段值為空,則顯示一個(gè)空格
if IsNull(rst(i)) then
%>
td>nbsp;/td>
% else %>
td nowrap>% =rst(i) %>/td>
% end if %>
% next %>
/tr>
%
rst.MoveNext
wend
%>
/table>
% end if %>
/div>
/body>
/html>
以上就是關(guān)于ASP基礎(chǔ)知識(shí)Command對(duì)象的入門(mén)教程,希望對(duì)大家的學(xué)習(xí)有所幫助,多多交流探討。
您可能感興趣的文章:- ASP.net基礎(chǔ)知識(shí)之常見(jiàn)錯(cuò)誤分析
- ASP.NET 2.0 程序安全的基礎(chǔ)知識(shí)
- 服務(wù)器XMLHTTP(Server XMLHTTP in ASP)基礎(chǔ)知識(shí)
- ASP.NET母版頁(yè)基礎(chǔ)知識(shí)介紹
- ASP基礎(chǔ)知識(shí)VBScript基本元素講解
- ASP基礎(chǔ)入門(mén)第二篇(ASP基礎(chǔ)知識(shí))
- ASP新手必備的基礎(chǔ)知識(shí)