asp mysql连接已重置,mysql-检查经典ASP中的连接是否正常
有沒有一種簡單的方法來檢查連接字符串是否成功連接到指定的數(shù)據(jù)庫:
場景:
連接字符串示例:
ConnString="DRIVER={MySQL ODBC 5.1 Driver}; SERVER=###.###.####.##; PORT=3306; DATABASE=DbName; USER=DbUser; PASSWORD=DbUser_Pswrd; OPTION=3;"
如果上述操作失敗(例如,由于MySQL服務(wù)器當前處于脫機狀態(tài)),或者有什么簡單的方法可以檢查是否存在問題,而不是像下面解釋的那樣拋出一般錯誤80004005,則可以進行登錄嗎?
解決方案是解決頁面加載時引發(fā)的錯誤,該錯誤是由于連接無法連接到數(shù)據(jù)庫而導致代碼中的以下行導致錯誤的:
rs.ActiveConnection = connString
我想在讀取上述行之前捕獲此連接問題,以便我可以重定向到?jīng)]有連接字符串的頁面,并顯示一條消息,指出服務(wù)器當前處于離線狀態(tài)等.
我只需要catch錯誤代碼.
解決方法:
VBScript錯誤處理
在VBScript中捕獲錯誤的方法是使用On Error Resume Next語句和內(nèi)置在VBScript運行時中的Err對象.
什么是Err對象?
Err對象用于包含有關(guān)運行時引發(fā)的錯誤的信息,它始終包含最后引發(fā)的錯誤,并在引發(fā)更多錯誤時不斷覆蓋自身.
當出現(xiàn)錯誤時,執(zhí)行將停止,那么Err有什么意義呢?
這是因為默認情況下,錯誤會停止腳本執(zhí)行.但是,VBScript提供了一種機制,可以忽略這些錯誤并通過移至下一個可執(zhí)行行并填充Err對象來繼續(xù)執(zhí)行.為此,我們在希望執(zhí)行忽略運行時錯誤的位置放置一個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語句,一旦引發(fā)錯誤,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.
經(jīng)典ASP的常見用法
>有時您可能想檢測特定的錯誤并返回更友好的自定義響應(yīng),最簡單的方法是從If Err.Number<>建立響應(yīng). 0然后聲明.
If Err.Number <> 0 Then
Response.Write "Error (" & Err.Number & ") occurred: " & Err.Description
End If
>一種更復雜的方法是引發(fā)您自己的錯誤,然后其他人可以在執(zhí)行樹中捕獲該錯誤(取決于您的Web應(yīng)用程序的復雜性).
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 "
For Each err_obj In errors
Response.Write "
Error: " & err_obj(0) & " - " & err_obj(1) & ""Next
Response.Write "
"End If
>使用Select語句而不是經(jīng)典的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
總結(jié)
以上是生活随笔為你收集整理的asp mysql连接已重置,mysql-检查经典ASP中的连接是否正常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql ddl crash,MySQ
- 下一篇: centos7 php无法启动服务器,关