运行ASP时的常见错误类型和排解方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运行ASP时的常见错误类型和排解方法
由于ASP仍然是当前比较流行的网站编辑语言,而且相对于其它几门语言,它简单易用。
因为简单,所以许多开发者也不会去思考错误处理,但错误处理不仅能培养良好的编程习惯、使程序完美,而且可以防止不必要的数据暴露,保证网站安全。
ASP主要有以下三种错误类型:
1、编译错误:这种错误出现一般都是代码的语法问题。
因为编译错误而导致ASP停止运行。
错误类型:
ADODB.Field (0x800A0BCD)
BOF 或EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
原因:你在利用SQL查找数据库的记录时,查找结果为空,而且你没有对空记录的情况做出处理。
解决:1如果你不相信查找结果为空,那你应该考虑你的SQL语句是否正确;2如果确实有空的情况,那你应该添加”if rs.eof then”或者”do while not rs.eof”之类的语句,对eof的情况进行处理。
错误类型:
(0×80020009)
发生意外。
原因:也是在利用SQL查找数据库记录时,查找结果为空,而且你在后面的代码中调用了rs(“aa”)之类的记录
解决:要么同上,加上rs.eof的判断和处理,要么就是你的SQL语句有误,导致记录查不出来,也就无法在后来使用rs(“aa”)的记录了。
错误类型:
Active Server Pages, ASP 0126 (0×80004005)
找不到包含文件…xxx.asp'。
原因:就如错误提示所说,不存在这个包含文件。
解决:如果你确定有这个文件,那么就是你的路径写错了,比如说其实他相对于网站根目录的路径应该是inc/xxx.asp,那么include里面就应该写inc/xxx.asp,而不仅仅是xxx.asp。
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0×80004005)
[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。
原因:这个在XP服务器上非常常见,属于服务器的配置问题,或者说是用户的权限问题。
解决:如果仅仅是在本机上调试出现的错误,则右键点击网站所在的文件夹,点击”共享和安全…”,在”安全”中点添加…,写入everyone,然后再使这个用户的权限为所有,即除了第一个外全部打勾,确定之后再刷新就可以用了。
(注:如果找不到“安全”选项,则在任意一个文件夹下点击“工具”,然后是“文件夹选项”--“查看”,在“使用简单文件共享”一栏把勾去掉即可)
错误类型:
Microsoft VBScript 编译器错误(0x800A0401)
语句未结束
原因:语法错误。
解决:按系统所提示的行来检查。
如果提示的恰好是本页的最后一行,则很有可能是if语句忘记写”end if”啦,select语句忘记写”end select”啦,总之是需要end的地方没有end,导致服务器找不到语句的结尾,只好在最后一行显示错误。
错误类型:
Microsoft JET Database Engine (0x80040E10)
至少一个参数没有被指定值。
原因:在写SQL语句的时候,我们经常会调用一些参数,很可能这些参数中有一个没有被赋值。
解决:检查每一个参数的值是否真的传递过来了,很可能有些参数其实是”',这样的参数去索引数据库当然是不行的。
错误类型:
Microsoft JET Database Engine (0x80040E37)
Microsoft Jet 数据库引擎找不到输入表或查询…AA'。
确定它是否存在,以及它的名称的拼写是否正确。
原因:不存在这个表。
解决:应该是你写错了表名,或者连错了数据库?再仔细核对一下吧!
错误类型:
Microsoft VBScript 运行时错误(0x800A000D)
类型不匹配: \'[string: '']\”
原因:是因为你的变量的类型是字符串型的,而你却当作数字或者其他类型来使用。
解决:比如你需要数字的变量用来计算i=i 1等数学运算,那么应该在变量上使用cint(变量名),强制转换为数字型,两个变量之间作比较也一定要是相同的类型,因此也需要转换,方法同上。
错误类型:
Microsoft JET Database Engine (0x80040E07)
标准表达式中数据类型不匹配。
原因:一般也是在写SQL语句时发生了错误,即把数字型和字符串型的变量混淆了。
解决:很好办,试一试把SQL中变量加了”的去掉单引号,或者把原先认为是数字的加上”,再查看效果。
2、运行错误:这个错误是发生在你准备运行ASP时的。
例如:如果你试图给一个变量赋值,但是却超出了该变量允许的范围。
错误类型:
Microsoft VBScript 运行时错误(0x800A01A8)
缺少对象:”
原因:很有可能是你没有对rs对象进行定义。
解决:别忘了写set rs=server.CreateObject(“adodb.recordset”),这样可以定义对象;或者直接不用这种写法,直接用conn.execute(“SQL”)这样会方便得多,也不用考虑对象问题。
错误类型:
Microsoft VBScript 运行时错误(0x800A005E)
无效使用Null: …Replace'
原因:无效使用函数的情况也比较多见,包括Split等,这个道理也比较简单,就是因为你Replace的内容是空的。
解决:最好加一句IF检验一下你要replace的内容是否为空。
Microsoft VBScript 编译器错误错误'800a03f6′
ODBC 驱动程序不支持所需的属性。
原因:可能是因为没有sql语句里出现的字段名,一般为字段名或sql关键字书写错误。
也有可能是sql所要打开的表已经被独占打开。
解决方法:检查sql语句里出现的每个字段名,和每个关键字
Microsoft OLE DB Provider for ODBC Drivers 错误'80004005′
机器…HDZC-3JQSKBWO02′ 上的用户…Admin' 以独占方式的锁定数据表
'order_detail'。
原因:sql所需的表被access以表设计形式打开着
解决方法:关闭表设计
Microsoft VBScript 编译器错误错误'800a03f6′
在对应所需名称或序数的集合中,未找到项目。
原因:没有sql语句里出现的字段名,一般为字段名或sql关键字书写错误
解决方法:检查sql语句里出现的每个字段名
ADODB.Recordset 错误 '800a0e78′
对象关闭时,不允许操作。
原因:在rs.open sql,conn,3,3语句之前使用了rs.close关闭了rs对象
解决方法:去掉之前的rs.close
Microsoft OLE DB Provider for ODBC Drivers 错误'80040e14′
[Microsoft][ODBC Microsoft Access Driver] 语法错误(操作符丢失) 在查询表达式…oid form classtree where oid = 25′ 中。
原因:在sql语句中存在非法书写的英文关键字或子段错误
解决方法:把sql语句打出来,然后逐个单词对照,查找出书写的错误
操作要求一个可更新的查询
a.看看库文件是不是只读了。
b.经过排序(order by) 的记录集(rs)不允许有更新操作(rs.update)
3219 操作在该内容中不被允许
c.数据库字段属性是否设置为允许空值插入。
个不存在的字段名)
ADODB.Recordset(0x800A0BCD)–>rs对像出错(记录集中没有记录却对记录集进行操作)
ADODB.Recordset(0x800A0E78)–>rs对像出错(记录集不存在,缺少rs.open语句) ADODB.Recordset(0x800A0CC1)–>rs对像出错(引用了一个不存在的字段名) ADODB.Recordset(0x800A0E7D)–>conn定义错误
ADODB.Recordset(0x800A0CB3)–>数据库以只读方式打开,无法更新数据
在解决一般错误后,网站运行基本就没有问题了,不过为了保险起见,我们还是应该对网页内的错误进行处理,这样不仅对用户友好,而且能防范信息泄漏造成被黑客利用。
想知道更多错误详情请查看/yinan/582.html。