|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全毛病
处置数据存储时,产生毛病的大概性老是存在的:平安性成绩,试图更新已被其他用户删除的纪录,诸云云类的成绩良多。不克不及包管统统都运转优秀,因而必需构建某种情势的毛病把持。
在第7章中,研讨了ASP页面中一样平常的毛病处置,但如今触及的是数据存储,以是必需思索利用分外的代码举行毛病处置。先看一下Errors汇合,再会商其怎样满意ASP3.0的毛病处置机制。
8.5.1Errors汇合
Errors汇合包括由单个ADO命令的实行而引发的每个毛病的Error工具。利用Errors汇合的缘故原由是因为在一个命令的实行过程当中,大概会引发多个毛病,OLEDB供应者必要供应一种体例关照客户方已有多个毛病产生。
关于Errors汇合有两个主要的中央必要注重:
·每次实行ADO命令,假如产生毛病,就清空毛病集,同时期之以新的毛病内容。固然,假如没有毛病产生,Errors汇合不会遭到影响。以是,即便ADO命令乐成实行,这个汇合中也大概含有毛病信息。
·OLEDB供应者大概会将包括信息的动静或告诫装进Errors汇合,毛病号为0。以是不克不及只反省汇合中的毛病号而假定毛病已产生。好比,利用ODBC供应者与SQLServer毗连,大概会失掉一个“毛病”,告诉缺省的数据库已改动了。
假如转头看一下本章入手下手讲到的工具模子,大概会发明Errors汇合只能由Connection工具会见。读者大概会以为奇异,假如不显式地创立一个Connection工具,怎样会见Errors汇合?Recordset工具有一个ActiveConnection属性,含有以后纪录集的Connection工具,这意味着能够如许失掉Errors汇合:
rsAuthors.ActiveConnection.Errors
假如想看产生的全体毛病,则必要遍历全部Errors汇合:
ForEacherrAuthorsInrsAuthors.ActiveConnection.Errors
Displayerror
Next
为了显现一些公道的毛病信息,必要切实晓得在Errors汇合中究竟有些甚么。
Error工具包括表8-5所示的属性:
表8-5Error工具的属性及申明
这意味着轮回历程如今能够酿成如许:
ForEacherrAuthorsInrsAuthors.ActiveConnection.Errors
Response.Write"Number:"&errAuthors.Number&_
"<BR>NativeError:"&errAuthors.NativeError&_
"<BR>SQLState:"&errAuthors.SQLState&_
"<BR>Source:"&errAuthors.Source&_
"<BR>Description:"&errAuthors.Description&_
"<P>"
Next
8.5.2ASP页面中的ADO毛病
在第4、7章,我们研讨了ASP的毛病,和怎样简便并完全地处置这些毛病。ASP3.0的一个新特性就是自界说毛病页面,但这关于ADO的确用途不年夜,由于剧本中的变量没法传进自界说的毛病页面。这就意味着我们没法检测Errors汇合。
面临如许的情形,必需供应本人的毛病处置。假如你利用JScript作为服务器端编程言语,那末你将具有新的try/catch特征,可是VBScript关于毛病的处置仍旧有很多不敷。今朝,最好的检测毛病的办法是利用OnErrorResumeNext语句,然后在大概会引发毛病的每行ADO代码后反省Errors汇合。就像如许:
<%
OnErrorResumeNext
DimrsAuthors
DimstrSQL
SetrsAuthors=Server.CreateObject("ADODB.Recordset")
strSQL="SELECTMissingColumn1,MissingColumn2,au_lname,au_fname"&_
"FROMauthors"
rsAuthors.OpenstrSQL,strConn,adOpenDynamic,adLockOptimistic,adCmdText
IfCheckForErrors(rsAuthors.ActiveConnection)=FalseThen
WhileNotrsAuthors.EOF
Response.WritersAuthors("au_lname")&","&_
rsAuthors("au_fname")&"<BR>"
rsAuthors.MoveNext
Wend
EndIf
rsAuthors.Close
SetrsAuthors=Nothing
%>
这里可以使用CheckForErrors子程序来检测是不是有毛病产生:
FunctionCheckForErrors(objConn)
DimobjErrorErrorobject
Errorsmeansthecountwillbegreaterthan0
IfobjConn.Errors.Count>0Then
Loopthroughtheerrors
ForeachobjErrorinobjConn.Errors
Eorroswithnumber0areinformational
IfobjError.number0then
Response.Write"<TABLEBORDER=1>"&_
"<TR><TD>ErrorProperty</TD><TD>Contents</TD>"&_
"</TR><TR><TD>Number</TD><TD>"&objError.Number&_
"</TD></TR><TR><TD>NativeError</TD><TD>"&_
objError.NativeError&"</TD></TR>"&_
"<TR><TD>SQLState</TD><TD>"&objError.SQLState&_
"</TD></TR><TR><TD>Source</TD><TD>"&_
objError.Source&"</TD></TR>"&_
"<TR><TD>Description</TD><TD>"&_
objError.Description&"</TD></TR></TABLE><P>"
CheckForErrors=True
EndIf
Next
Else
CheckForErrors=False
EndIf
EndFunction
%>
这个程序检测是不是有毛病,假如有,则为每个毛病创立一个表格,并给出了如-11所示的了局。
这并非一个手艺含量较高的办理计划,但的确是用VBScript所能做到的最好的办理计划。真实的不敷是必需本人检测毛病。
8.6小结
如今,应当扩大基本常识,研讨Command工具,了解怎样利用一些初级特征往改善功能和保护ASP页面。
ASP.NET和ASP的比较,技术上比较已经没什么可说的了.新一代在大部分程度来说当然是比旧一代好了.关键看你对所做软件的理解了.因人而定.会写的话也可能比ASP.NET写得更有效率和更方便重用 |
|