ASP教程之ASP 3.0初级编程(四十二)
使用cdonts,可以发送、查看邮件,实现webmail的功能。结合wsh,可以实现对nt主机的管理,如nt用户管理、iis虚拟主机设置、exchange邮箱设置等等,就像管理本地机一样方便。编程|初级5.前往值对函数前往值的处置分歧于存储历程前往值的处置,这经常招致搅浑。在函数中,常常是前往一个布尔值来标明函数运转的乐成与否。
IfSomeFunctionName()=TrueThen
Functionsucceeded
但在挪用一个存储历程时,却不克不及利用一样的办法,由于存储是用Execute办法运转的,同时前往一个纪录集。
SetrsAuthors=cmdAuthors.Execute
假如得不到一个前往值,怎样断定是不是已准确实行存储历程?当产生毛病时,会呈报毛病,如许便可利用前一章供应的毛病处置代码来处置毛病。但关于一些非致命的逻辑毛病怎样办?
比方,思索向employee表增加一个新人员的情况。你大概不想避免两个人员同名的情形,但想说明这个情形。那末,可使用一个前往值以标明是不是已有同名的人员存在。存储历程以下:
CREATEPROCEDUREusp_AddEmployee
@Emp_IDChar(9),
@FNameVarchar(20),
@MinitChar(1),
@LNameVarchar(30),
@Job_IDSmallInt,
@Job_LvlTinyInt,
@Pub_IDChar(4),
@Hire_DateDatetime
AS
BEGIN
DECLARE@ExistsInt--Returnvalue
--Seeifanemployeewiththesamenameexists
IFEXISTS(SELECT*
FROMEmployee
WHEREFName=@FName
ANDMInit=@MInit
ANDLName=@LName)
SELECT@Exists=1
ELSE
SELECT@Exists=0
INSERTINTOEmployee(emp_id,fname,minit,lname,
job_id,job_lvl,pub_id,hire_date)
VALUES(@Emp_Id,@FName,@MInit,@LName,@Job_ID,
@Job_Lvl,@Pub_ID,@Hire_Date)
RETURN@Exists
END
该历程起首反省是不是有同名的人员存在,并据此设定响应的变量Exists,若存在同名,就设为1,不然为0。然后将该人员加到表中,同时把Exists的值作为前往值前往。
注重只管前往了一个值,但并未将其声明为存储历程的参数。
挪用该历程的ASP代码以下:
<!--#INCLUDEFILE="../include/Connection.asp"-->
<%
DimcmdEmployee
DimlngRecs
DimlngAdded
SetcmdEmployee=Server.CreateObject("ADODB.Command")
Setthepropertiesofthecommand
WithcmdEmployee
.ActiveConnection=strConn
.CommandText="usp_AddEmployee"
.CommandType=adCmdStoredProc
Createtheparameters
Noticethatthereturnvalueisthefirstparameter
.Parameters.Append.CreateParameter("RETURN_VALUE",adInteger,_
adParamReturnValue)
.Parameters.Append.CreateParameter("@Emp_id",adChar,adParamInput,9)
.Parameters.Append.CreateParameter("@fname",adVarWChar,adParamInput,20)
.Parameters.Append.CreateParameter("@minit",adChar,adParamInput,1)
.Parameters.Append.CreateParameter("@lname",adVarWChar,adParamInput,30)
.Parameters.Append.CreateParameter("@job_id",adSmallInt,adParamInput)
.Parameters.Append.CreateParameter("@job_lvl",adUnsignedTinyInt,adParamInput)
.Parameters.Append.CreateParameter("@pub_id",adChar,adParamInput,4)
.Parameters.Append.CreateParameter("@hire_date",adDBTimeStamp,_
adParamInput,8)
Settheparametervalues
.Parameters("@Emp_id")=Request.Form("txtEmpID")
.Parameters("@fname")=Request.Form("txtFirstName")
.Parameters("@minit")=Request.Form("txtInitial")
.Parameters("@lname")=Request.Form("txtLastName")
.Parameters("@job_id")=Request.Form("lstJobs")
.Parameters("@job_lvl")=Request.Form("txtJobLevel")
.Parameters("@pub_id")=Request.Form("lstPublisher")
.Parameters("@hire_date")=Request.Form("txtHireDate")
Runthestoredprocedure
.ExecutelngRecs,,adExecuteNoRecords
Extractthereturnvalue
lngAdded=.Parameters("RETURN_VALUE")
EndWith
Response.Write"Newemployeeadded.<P>"
IflngAdded=1Then
Response.Write"Anemployeewiththesamenamealreadyexists."
EndIf
SetcmdEmployee=Nothing
%>
必要重点注重,前往值应该作为汇合中第一个参数被创立。即便前往值其实不作为一个参数呈现在存储过程当中,老是Parameters汇合中的第一个Parameters。</p>下一页
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
页:
[1]