ASP基礎(chǔ)知識(shí)Command對(duì)象講解
Coonamd 對(duì)象定義了將對(duì)數(shù)據(jù)源執(zhí)行的命令,可以用于查詢(xún)數(shù)據(jù)庫(kù)表并返回一個(gè)記錄集,也可以用于對(duì)數(shù)據(jù)庫(kù)表進(jìn)行添加、更改和刪除操作。
一、使用Command 對(duì)象的步驟:
當(dāng)在 ASP 頁(yè)面中使用 Command 對(duì)象處理數(shù)據(jù)時(shí),應(yīng)首先設(shè)置命令類(lèi)型、命令文本以及相關(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è)置命令類(lèi)型;
3、使用 CommandText 屬性定義命令(例如SQL語(yǔ)句)的可執(zhí)行文本;
4、使用 CommandTimeout 屬性設(shè)置命令超時(shí)時(shí)間;
5、使用 Execute 方法執(zhí)行命令。
二、Command 對(duì)象的屬性:
三、Command 對(duì)象的方法----Execute
該方法執(zhí)行在 CommandText 屬性中指定的查詢(xún)。語(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ù)化查詢(xún)或存儲(chǔ)過(guò)程的 Command 對(duì)象相關(guān)聯(lián)的參數(shù)或自變量。通過(guò)創(chuàng)建 Parameter 對(duì)象并添加到 Parameter 集合中,可以向參數(shù)化查詢(xún)傳遞所需要的數(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">查詢(xún)記錄</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"> <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 %> <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>查詢(xún)各部門(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 '將用戶(hù)提交的所在部門(mén)名稱(chēng)作為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)名稱(chēng),或選擇所有部門(mén),則顯示所有記錄,否則按參數(shù)進(jìn)行查詢(xún)。**************** if PrmDepartment.Value="" or Request.Form("department")="all" then cmd.CommandText="select * from 員工基本情況表" Else '便用參數(shù)化查詢(xún)語(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> </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í)有所幫助,多多交流探討。
相關(guān)文章
ASP編程入門(mén)進(jìn)階(十):Global.asa文件
ASP編程入門(mén)進(jìn)階(十):Global.asa文件...2007-01-01asp添加數(shù)據(jù)實(shí)現(xiàn)代碼
數(shù)據(jù)代碼程序,接受用戶(hù)提交過(guò)來(lái)的數(shù)據(jù),再保存到數(shù)據(jù)庫(kù)教程中很方便等的哦,下面來(lái)看個(gè)詳細(xì)的說(shuō)明實(shí)例吧。2010-09-09用ASP實(shí)現(xiàn)遠(yuǎn)程批量文件改名
用ASP實(shí)現(xiàn)遠(yuǎn)程批量文件改名...2006-06-06為什么 Windows2003 的 IIS6.0 不能上傳超過(guò) 200K 的文件?
為什么 Windows2003 的 IIS6.0 不能上傳超過(guò) 200K 的文件?...2006-12-12asp字符串連接符&、多個(gè)字符串相加、字符串拼接類(lèi)
這篇文章主要介紹了asp字符串連接符&、多個(gè)字符串相加、字符串拼接類(lèi),需要的朋友可以參考下2020-02-02ASP編程入門(mén)進(jìn)階(二十):ADO組件之顯示數(shù)據(jù)記錄
ASP編程入門(mén)進(jìn)階(二十):ADO組件之顯示數(shù)據(jù)記錄...2007-01-01學(xué)習(xí)ASP和編程的28個(gè)觀點(diǎn)
學(xué)習(xí)ASP和編程的28個(gè)觀點(diǎn)...2007-02-02