|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
使用cdonts,可以发送、查看邮件,实现webmail的功能。结合wsh,可以实现对nt主机的管理,如nt用户管理、iis虚拟主机设置、exchange邮箱设置等等,就像管理本地机一样方便。毛病|数据|数据库本文中所提到的asp页面,除出格声明外,均指<@PAGELANGUEGE=”VBSCRIPT”>
写asp与数据库的分离的程序时,常常会碰到统一数据表中不同意存在反复值的成绩,好比用户注册程序中不同意呈现不异的用户ID。如许的情形下,我之前接纳的举措是读取数据库中的已存在值,然后与用户输出的值对照,假如有不异,则提醒已被注册,须从头填写。如许做能够到达预期的目标,可是由于有一次分外的数据库存取操纵,对照华侈资本。
我们都晓得,数据表中的列能够设置独一性束缚,就是从数据库限定该字段不同意呈现反复值,违背独一性束缚后,数据库将前往2627毛病,提醒“违背了%1!束缚%2!。不克不及在工具%4!中拔出反复键”,这是数据库的输入,SQLServer的一切毛病都存储在体系表master.dbo.sysmessages中。用户界说的动静也能够存储在sysmessages中。在asp中挪用存储历程的时分,因为存储历程没有容错处置,会前往该提醒到页面,并停止语句的实行,@@Error前往值为0。假如页面设置了容错,则不会呈现毛病提醒,但由于毛病是数据库中呈现的,以是Err.Number不克不及失掉其毛病号。(也多是我的数据库不熟的缘故原由:-),还请年夜虾指导)。克日研讨ADO,找到了一种加倍烦琐的体例完成该把持。
ADO(ActiveXDataObjects)被普遍的用于使用程序与数据库的毗连,asp也能够经由过程他来完成对数据库的操纵的。ADO2.1的Connection工具中有一个Error工具,经由过程它能够捕获到来自数据库的毛病,以在asp页面中把持。该工具经常使用的Property有以下几个,均为只读:
Description:字符型,前往来自数据库的毛病形貌
Source:字符型,毛病来历
SQLState:字符型,ODBCAPI(驱动程序办理器)毛病,SQLServer2000中对其有以下形貌:
SQLSTATE前往的字符串值由两个字符的类值后接三个字符的子类值构成。类值01标明是一种告诫,后跟从SQL_SUCCESS_WITH_INFO的前往代码。只需类值不是01(IM除外),则标明是一种毛病,后跟从SQL_ERROR的前往代码。类IM专门用于标明从ODBC完成发生的告诫和毛病。任何类中子类值000均用于完成给定类中所界说前提。这类类值和子类值的分派办法由SQL-92界说。
跑题了跑题了,回到方才的话题~~~
Number:前往与毛病相干联的数字值,是一个32位的值。较高的16位字是举措措施代码,而较低的字才是真实的毛病代码。
NativeError:这就是我们明天要用到的,MSDN对他的形貌是:
TheNativeErrorpropertyonaError(是否是M$的BUG?我英语不合格:-))objectindicatestheprovider-specificerrorcodeforagivenErrorobject.ThispropertyreturnsaaLongvaluethatindicatestheerrorcode.
另有HelpFile和Helpcontext,都是有关匡助的,这里就不胪陈了。
在这里我们用到了NativeError,用它来捕获来自数据库的毛病,他前往了该毛病的编号。源程序片段以下:
<%ONERRORRESUMENEXTVBSCRIPT的容错
SetConn=Server.CreateObject("ADODB.Connection")
SetRS=Server.CreateObject("ADODB.RecordSet")
Conn.Open"DSN=BBII;UID=sa;PWD="
SQL="Execch_insNoveld,22,33,44,55"
SQL="InsertIntoNovel(Name,Author,yy,ee)VALUES(nn,ee,jj)",与上句效果是一样的
RS.OpenSQL,Conn
IfConn.Errors.Count=0Then判别毛病的个数
IsSucc="乐成"
Else
selectcaseConn.Errors.Item(0).NativeError
case2627
IsSucc="ddddddd"你能够依据必要,界说多个本人的毛病前往值
EndSelect
Endif
Response.Write"<br>:::"&IsSucc
%>
注重selectcase…一句中的“Conn.Errors.Item(0).NativeError”,前往一组item中的第一个。在我们这个例子傍边,陪伴2627措促同时产生的是“语句已停止”(3621),严厉来说,他不是毛病,而是一样平常性告诫(严峻级别=10)。以是我们必要用来判别的是第一个毛病,固然,你能够界说i=i+1来检察一切产生的毛病。如许,我们就可以够晓得来自SQLServer的毛病的详细内容,能够更简单的把持了。
附:毛病编号
<!―ErrLp.asp-->
<%ONERRORRESUMENEXT
SetConn=Server.CreateObject("ADODB.Connection")
Conn.Open"Driver={SQLServer};Server=127.0.0.1;database=master;UID=sa;pwd="
setrs=Server.CreateObject("ADODB.RecordSet")
SQL="Select*FromsysmessagesWheremsglangid=2052OrderByerror"
rs.opensql,conn,3,2
PAGE=CLng(REQUEST("txtpage"))
RS.PageSize=100
IfPAGE<1ThenPAGE=1
IfPAGE>RS.PageCountThenPAGE=RS.PageCount
RS.AbsolutePage=PAGE
%>
<style>
td
{
font-family:Verdana;
font-size:10pt;
}
</style>
<Div>
<FORMMETHOD="GET">
<TABLEWIDTH="100%"BORDER="0"CELLSPACING="0"CELLPADDING="0"BGCOLOR="#999999">
<TR>
<TDwidth="100">总计数:<%=RS.RecordCount%></td>
<TDwidth="80">总页数:<%=RS.PageCount%></TD>
<TDwidth="90">今朝页次:<%=page%></TD>
<TDwidth="80">转到<INPUTTYPE="text"NAME="txtpage"SIZE="2"style="font-family:Verdana;font-size:8pt;border-style:solid;border-width:1">页</TD>
 </p>使用cdonts,可以发送、查看邮件,实现webmail的功能。结合wsh,可以实现对nt主机的管理,如nt用户管理、iis虚拟主机设置、exchange邮箱设置等等,就像管理本地机一样方便。 |
|