VB中使用ADO访问SQL server如何进行错误处理?

easydone 2000-05-20 08:40:00
我用在VB 6.0中使用ADO访问远程的SQL SERVER数据库,并希望建立连接前能够让用户输入ODBC中数据源的名称(DSN),但由于输入的DSN可能有误adodb.connection会返回“运行时错误”并中断程序。我知道ADO中有Error Object可以防止上述问题,但我不知道它的具体用法,请您帮忙指教如何使用Error Object对象处理ADO中的错误?
十分感谢!
...全文
381 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xguoz 2000-05-25
  • 打赏
  • 举报
回复
VB当中对ERROR对象的使用关键在于on error的使用,如果
一个sub或function当中发生了error而本地又没有on error,
那么错误会向此模块的上级弹出,直到发现on error错误处理段
为止,如果所有用户的程序中都没有on error,vb运行库会处理这个
错误,结果就是客户程序被强行结束。当错误发生时,err.number是
非0的,如果设置了on error
goto ...或on error resume,都会导致err.number=0。因此在错误
处理段需要对错误进行清理。

对于调用ADO类的处理程序(一般是以DLL文件形式出现),在on error错误
处理部分都是重新生成一个新的错误(用指定的错误号和描述),让此DLL的
调用者在调用位置使用on error捕获此错误进行处理
cimsnet 2000-05-24
  • 打赏
  • 举报
回复
下面是我编写的一个小程序中的用户登陆部分,用到了错误处理
On Error GoTo ErrorHandler
Set Conn = New ADODB.Connection
Conn.Provider = "Microsoft.Jet.OLEDB.3.51"
Conn.Open "d:\毕业设计\试题库.mdb" '


mySql = "select user_pwd from 用户信息 where user_name='" & txtusername.Text + "'"
Set rsUserInform = Conn.Execute(mySql)

While Not rsUserInform.EOF
If txtpassword.Text = Trim(rsUserInform("user_Pwd")) Then
Me.Hide
main.Show
Exit Sub
End If
rsUserInform.MoveNext
Wend
MsgBox "用户名不存在,请重新输入用户名称!", 48, "错误"
rsUserInform.Close
Conn.Close
Set Conn = Nothing
End If

MsgBox "密码输入错误,请重新输入!", 48, "警告"
intLoginNum = intLoginNum + 1

If intLoginNum = 3 Then
MsgBox "由于你密码三次输入错误,不能使用本试题库!", 48, " 错误"
Unload Me
End If
Exit Sub

'错误处理程序
ErrorHandler:
' 枚举错误集合并显示每个 Error 对象的属性。
For Each errLoop In Conn.Errors
strError = "错误:" & errLoop.Number & vbCr & _
" " & errLoop.Description & vbCr & _
" (Source: " & errLoop.Source & ")" & vbCr & _
" (SQL State: " & errLoop.SQLState & ")" & vbCr & _
" (NativeError: " & errLoop.NativeError & ")" & vbCr
If errLoop.HelpFile = "" Then
strError = strError & _
" No Help file available" & _
vbCr & vbCr
Else
strError = strError & _
" (HelpFile: " & errLoop.HelpFile & ")" & vbCr & _
" (HelpContext: " & errLoop.HelpContext & ")" & _
vbCr & vbCr
End If
MsgBox strError, 16
Next
resume
mxp 2000-05-22
  • 打赏
  • 举报
回复
'ErrorDesc 为出错显示内容

On Error GoTo AddNewExError

Set oConn = New Connection
oConn.ConnectionString = "driver={SQL Server};......" '自己写连接
oConn.Open
oConn.BeginTrans

Set oRs = New Recordset
Set oRs.ActiveConnection = oConn
oRs.Source = [SQL语句]
oRs.CursorType = adOpenStatic
oRs.LockType = adLockOptimistic
oRs.Open
.....

If Err.Number = 0 Then
oConn.CommitTrans
oRs.Close
oConn.Close
flag = True
ErrorDesc = ""
Else
oConn.RollbackTrans
oRs.Close
oConn.Close
flag = False
ErrorDesc = Err.Description
End If
Exit Sub
AddNewExError:
flag = False
ErrorDesc = Err.Description

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧