仓酷云

标题: ASP教程之使用数据库的独一性束缚并在asp中捕获数... [打印本页]

作者: 活着的死人    时间: 2015-1-16 22:59
标题: ASP教程之使用数据库的独一性束缚并在asp中捕获数...
使用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>
&nbsp</p>使用cdonts,可以发送、查看邮件,实现webmail的功能。结合wsh,可以实现对nt主机的管理,如nt用户管理、iis虚拟主机设置、exchange邮箱设置等等,就像管理本地机一样方便。
作者: 灵魂腐蚀    时间: 2015-1-20 07:14
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
作者: 飘灵儿    时间: 2015-1-22 08:28
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
作者: 冷月葬花魂    时间: 2015-1-24 19:14
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
作者: 谁可相欹    时间: 2015-2-2 12:01
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
作者: 兰色精灵    时间: 2015-2-3 12:50
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
作者: 莫相离    时间: 2015-2-9 01:37
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
作者: 小女巫    时间: 2015-2-26 17:29
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
作者: 变相怪杰    时间: 2015-3-8 16:14
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
作者: 精灵巫婆    时间: 2015-3-16 04:32
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
作者: 若相依    时间: 2015-3-22 20:10
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2