asp mysql连接已重置,mysql-检查经典ASP中的连接是否正常

有没有一种简单的方法来检查连接字符串是否成功连接到指定的数据库:

场景:

连接字符串示例:

ConnString="DRIVER={MySQL ODBC 5.1 Driver}; SERVER=###.###.####.##; PORT=3306; DATABASE=DbName; USER=DbUser; PASSWORD=DbUser_Pswrd; OPTION=3;"

如果上述操作失败(例如,由于MySQL服务器当前处于脱机状态),或者有什么简单的方法可以检查是否存在问题,而不是像下面解释的那样抛出一般错误80004005,则可以进行登录吗?

解决方案是解决页面加载时引发的错误,该错误是由于连接无法连接到数据库而导致代码中的以下行导致错误的:

rs.ActiveConnection = connString

我想在读取上述行之前捕获此连接问题,以便我可以重定向到没有连接字符串的页面,并显示一条消息,指出服务器当前处于离线状态等.

我只需要catch错误代码.

解决方法:

VBScript错误处理

在VBScript中捕获错误的方法是使用On Error Resume Next语句和内置在VBScript运行时中的Err对象.

什么是Err对象?

Err对象用于包含有关运行时引发的错误的信息,它始终包含最后引发的错误,并在引发更多错误时不断覆盖自身.

当出现错误时,执行将停止,那么Err有什么意义呢?

这是因为默认情况下,错误会停止脚本执行.但是,VBScript提供了一种机制,可以忽略这些错误并通过移至下一个可执行行并填充Err对象来继续执行.为此,我们在希望执行忽略运行时错误的位置放置一个On Error Resume Next语句.

It is important to remember that On Error Resume Next will only ignore runtime errors. Compilation Errors and Syntax Errors will still halt execution of a script.

所以我要使用On Error Resume接下来如何捕获错误?

使用If语句,一旦引发错误,Err对象将被填充该错误并可以被查询.

On Error Resume Next

'Line we are checking for error. When an error occurs execution will

'move to the next line, in this case the If Err.Number <> 0 Then.

rs.ActiveConnection = connString

If Err.Number <> 0 Then

'Raise a custom error, output error to screen or perform some action.

'Remember to clear the Err object before continuing.

Err.Clear

End If

'We no longer want to ignore errors

On Error Goto 0

Placing the On Error Resume Next statement resets the Err object as if the Err.Clear method had been called.

经典ASP的常见用法

>有时您可能想检测特定的错误并返回更友好的自定义响应,最简单的方法是从If Err.Number<>建立响应. 0然后声明.

If Err.Number <> 0 Then

Response.Write "Error (" & Err.Number & ") occurred: " & Err.Description

End If

>一种更复杂的方法是引发您自己的错误,然后其他人可以在执行树中捕获该错误(取决于您的Web应用程序的复杂性).

Err.Raise vbObjectError + 1, "My Custom App", "Connection not detected"

>您可能还想捕获一个错误列表,这可以通过使用Array或Scripting.Dictionary对象来完成,而不是立即输出错误.

Dim errors(), error_count

Dim err_obj

...

'This block could be repeated throughout the code for various

'error checks.

If Err.Number <> 0 Then

ReDim Preserve errors(error_count)

errors(error_count) = Array(Err.Number, Err.Description)

error_count = error_count + 1

End If

...

'Output errors

If IsArray(errors) Then

Response.Write "

" & error_count & " error(s) have been detected

"

Response.Write "

  1. "

For Each err_obj In errors

Response.Write "

Error: " & err_obj(0) & " - " & err_obj(1) & ""

Next

Response.Write "

"

End If

>使用Select语句而不是经典的If语句方法检测可能返回的各种错误代码;

Select Case Hex(Err.Number)

Case &H800A0006

'Overflow error

Case &H800A000B

'Division by zero error

Case Else

'Anything else

End Select

有用的链接

标签:adodb,vbscript,asp-classic,mysql

来源: https://codeday.me/bug/20191119/2037061.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值