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中的错误?
十分感谢!
...全文
378 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
基于VB6自主研发的轻量级数据库查询客户端工具,启动速度较快,所占资源较小。 附源码,对初学数据库编程的童鞋有所裨益! 1、支持SQLServer、Oracle、Sybase、DB2数据库平台 2、单句执行:可以提交单一的SQL语句给服务器执行。 3、多句一次执行:可以将多个SQL语句用空格或换行的方式进行隔离,程序会一次性提交给数据库服务器执行。(前提条件是语法通过) 4、多句依次执行:可以将多个SQL语句用分号‘;’隔开,程序会逐句提交。 5、执行指定的SQL语句:可以在SQL编辑框部分语句执行,在SQL命令框通过鼠标连续单击3次可以选择当前行。 6、在事务执行SQL语句:将执行按钮上方的Trans 框选,那么程序对于每次提交的SQL语句都是放在事务执行的,执行不成功程序会进行回滚操作。程序默认不进行事务处理,因为有些语句不能在事务执行。 版本修订记录: V3.6.0 16:08 2012/6/18 --支持DB2数据库平台,要求客户端安装 DB2 Run-Time Client Lite。 --支持数据库名的记忆功能。 V3.5.11 14:36 2012-5-12 --支持连接非缺省端口号的SQL Server平台。 V3.5.10 8:54 2009/12/22 --将OUT标签更名为Output。 V3.5.9 10:48 2009/8/19 --修订Bug:在Vista或Win7系统下主界面部分被遮盖显示不全的问题。 V3.5.8 --修订Bug:执行的存储过程没有返回结果集,在导出Excel时出现运行时错误。 V3.5.7 --界面标题栏增加当前连接数据库信息。 --修订死循环Bug,死3次后退出执行。 --修订最末语句分号后面跟若干回车符执行死循环的Bug。 V3.5.6 --还是使用TextBox控件作为SQL命令的输入框,RichTextBox控件的滚动条功能不太好用; --使用字符算法实现了双击SQL命令框选当前行的功能(TextBox控件本身不支持)。 --修订了窗体在Resize时的Bug。 V3.5.5 --使用RichTextBox控件代替原有的TextBox控件SQL命令输入框(支持双击选整行功能)。 --使用‘;’和‘回车换行’符号联合作为SQL命令逐个提交的分割标志符。 V3.5.4 --修订SQL日志文件记录错误的Bug。 V3.5.3 --修订系统未安装任何打印机的情况下导出Excel失败的Bug(设置打印页面横向时失败)。 V3.5.2 --修订运行目录没有可写权限导致记录日志失败无法提交SQL语句的Bug。 V3.5.0 --新增记录SQL语句日志的功能。 V3.4.0 --新增导出查询结果集到Excel文档的功能。 V3.3.4 --修改了窗体内部控件自动放缩的控制算法; --修改数据显示窗口支持滚轮鼠标的上下左右翻滚操作。 V3.3.0 --修改了连接ORACLE的连接字符串,要求客户端安装ODAC组件(OLEDB); --数据库下拉列表默认上次选择的数据项。 V2.0.0 --支持Sybase平台,要求客户端安装Sybase OLEDB组件; V1.0.0 --支持SQL Server平台,安装包自带ADO组件。
作  者: (美)威利斯(Willis,T),(美)克罗斯兰德(Crossland,J.) 等 著 杨浩 译 丛 书 名: 出 版 社: 清华大学出版社ISBN:9787302102595 出版时间:2005-03-01版  次:1页  数:700装  帧:平装开  本:16开 内容简介   本书全面讲述了构建应用程序、创建窗口和对话框、异常处理、使用面对象的编程技术等基础知识。读者将学习如何创建菜单、工具栏、对话框和Windows应用程序的其他控件,掌握如何通过循环和分支结构出决策,还将全面了解面向对象编程的概念和理论。   掌握了这些知识后,读者就可以进一步研究数据库编程,使用Web窗体创建用于Web的ASP.NET应用程序,并了解XML的基础知识。最后,通过Web Services,还可以把在线提供的功能无缝地集成到自己的应用程序。   本书主要内容:   编程的基础知识、VB.NET的工作原理以及.NET Framework的原则;   如何处理数据结构以及构建和部署Windows应用程序;   面向对象编程的概念和理论;   调试和错误处理技巧;   Web Services和.NET Remoting技术;   如何建立类库、创建自定义控制和自定义图形;   运用SQL ServerADO.NET进行数据库编程;   了解移动应用程序及其构建方法。   本书读者对象:   本书适合于VB.NET编程的初学者,也适合于使用过其他语言编程,但未接触过.NET的程序员。

34,590

社区成员

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

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