我正在尝试修复一个小实用程序,它似乎在一段空闲时间后失去了与数据库的连接。我已经将超时设置为0,但似乎不起作用。
我不想简单地崩溃并显示几条错误消息,而是尝试重新建立连接并执行查询,直到成功(我意识到这可能是对资源的错误使用),但即便如此,这也是我在这里要完成的任务。或者,如果可能,显示一个消息框,指出连接已丢失,一旦建立连接,该消息框将被关闭。
任何建议都将不胜感激。
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)
发布于 2015-12-28 14:14:39
您的连接可能由于未使用而在数据库端被丢弃。在不使用的时候维护连接并不是一个好的做法;连接在资源方面是昂贵的,因此任何这样的做法都不能很好地扩展。Dbadmins不太可能让未使用的连接保持很长时间。
你潜在的解决方案是尝试连接,如果你不能忽略这个错误。在这种情况下,我们不会经常说“从不”,但你永远不应该在没有计算Err.Number是否等于0的情况下使用"On Error Resume Next“(如果等于0,就没有错误)。这称为“内联错误处理”。
在任何情况下,我都不会使用这种方法。我将评估Connection对象的State Property,如果它是关闭的(cn.State = adoStateClosed),那么我将重新打开它。
发布于 2015-12-28 15:20:31
您可以尝试以下操作:
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
https://stackoverflow.com/questions/34445497
复制相似问题