通过ADODB连接oracle数据库,虽然设置了ConnectionTimeout 、CommandTimeout ,但是数据库暂停或关闭的时候,仍然会长时间没有反应,并不返回错误。问下,这种情况下如何来判断是否超时呢??Private dbCon As ADODB.Connection
Private dbCommand As ADODB.Command
Private dbRS As ADODB.RecordsetPrivate Sub Command1_Click()
Dim strCon As String
Dim errloop As ADODB.Error
On Error GoTo Err_Execute
strCon = "Provider=OraOLEDB.Oracle.1;Password=system;Persist Security Info=True;User ID=system;Data Source=oracle74;Extended Properties="""
Set dbCon = New ADODB.Connection
dbCon.ConnectionTimeout = 5
dbCon.CommandTimeout = 5
dbCon.Open strCon
MsgBox "链接成功!"
Exit Sub
Err_Execute:
'//错误处理
MsgBox "链接失败!"
End SubPrivate Sub Command2_Click()
Dim n As Long
On Error GoTo Err_Execute
Set dbCommand = New ADODB.Command
Set dbRS = New ADODB.Recordset Set dbCommand.ActiveConnection = dbCon
dbCommand.Prepared = False
dbCommand.CommandText = "select * from testlob"
dbCommand.CommandTimeout = 5
Set dbRS = dbCommand.Execute
n = dbRS.Fields.Count
Text1.Text = "字段个数:" & n
Exit Sub
Err_Execute:
'//错误处理
End Sub
Private dbCommand As ADODB.Command
Private dbRS As ADODB.RecordsetPrivate Sub Command1_Click()
Dim strCon As String
Dim errloop As ADODB.Error
On Error GoTo Err_Execute
strCon = "Provider=OraOLEDB.Oracle.1;Password=system;Persist Security Info=True;User ID=system;Data Source=oracle74;Extended Properties="""
Set dbCon = New ADODB.Connection
dbCon.ConnectionTimeout = 5
dbCon.CommandTimeout = 5
dbCon.Open strCon
MsgBox "链接成功!"
Exit Sub
Err_Execute:
'//错误处理
MsgBox "链接失败!"
End SubPrivate Sub Command2_Click()
Dim n As Long
On Error GoTo Err_Execute
Set dbCommand = New ADODB.Command
Set dbRS = New ADODB.Recordset Set dbCommand.ActiveConnection = dbCon
dbCommand.Prepared = False
dbCommand.CommandText = "select * from testlob"
dbCommand.CommandTimeout = 5
Set dbRS = dbCommand.Execute
n = dbRS.Fields.Count
Text1.Text = "字段个数:" & n
Exit Sub
Err_Execute:
'//错误处理
End Sub
msgbox "数据库连接超时"
endif
Set dbRS = dbCommand.Execute直接在这个下边写??
Set dbRS = dbCommand.Execute
if err.number=91 then
msgbox "数据库连接超时"
endif
我试了一下,好像也不行。
// dbCommand.CommandText = "select * from testlob"是不是testlob记录太多 所以耗时间?
单独在数据库中如果是ms sql 在查询分析器里运行 select * from testlob 时间长么?
问题是数据库暂停的时候,它一直在那里连接数据库,即使超时了也不报错。