首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VB6 Execute()重试,直到成功

VB6 Execute()重试,直到成功
EN

Stack Overflow用户
提问于 2015-12-24 07:57:18
回答 2查看 731关注 0票数 0

我正在尝试修复一个小实用程序,它似乎在一段空闲时间后失去了与数据库的连接。我已经将超时设置为0,但似乎不起作用。

我不想简单地崩溃并显示几条错误消息,而是尝试重新建立连接并执行查询,直到成功(我意识到这可能是对资源的错误使用),但即便如此,这也是我在这里要完成的任务。或者,如果可能,显示一个消息框,指出连接已丢失,一旦建立连接,该消息框将被关闭。

任何建议都将不胜感激。

代码语言:javascript
运行
复制
Public connMain As ADODB.Connection
Public rsMain As ADODB.Recordset 

......

Function Picture_Exists() As Boolean
On Error Resume Next 
sqlstr = "select * .... "
Set rsMain = connMain.Execute(sqlstr)
EN

回答 2

Stack Overflow用户

发布于 2015-12-28 14:14:39

您的连接可能由于未使用而在数据库端被丢弃。在不使用的时候维护连接并不是一个好的做法;连接在资源方面是昂贵的,因此任何这样的做法都不能很好地扩展。Dbadmins不太可能让未使用的连接保持很长时间。

你潜在的解决方案是尝试连接,如果你不能忽略这个错误。在这种情况下,我们不会经常说“从不”,但你永远不应该在没有计算Err.Number是否等于0的情况下使用"On Error Resume Next“(如果等于0,就没有错误)。这称为“内联错误处理”。

在任何情况下,我都不会使用这种方法。我将评估Connection对象的State Property,如果它是关闭的(cn.State = adoStateClosed),那么我将重新打开它。

票数 1
EN

Stack Overflow用户

发布于 2015-12-28 15:20:31

您可以尝试以下操作:

代码语言:javascript
运行
复制
On Error Resume  ''''instead of On Error Resume Next

Dim rsMain As New ADODB.Recordset
sqlstr = "select * .... "
If rsMain.State = adStateOpen Then rsMain.Close
rsMain.Open sqlstr, sProvider, adOpenKeyset, adLockOptimistic
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34445497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档