在vb中怎样检测已经连通的数据数(sql数据库)是否还在连通SQL数据库
Dim Cnn As ADODB.Connection
dim m_dsn
m_dsn = "Data Source=" & Trim(ServerIP0) & ";Provider=SQLOLEDB.1;Integrated Security=;Persist Security Info=False;User ID=BookStore;PWD=xhSQL;Initial Catalog=BookStore;"set Cnn=new ADODB.Connection
Cnn.open m_dsn过几分钟后
我想查测一下Cnn是否还是在连通
不能再用Open 因为这样效率比较低
我想用一种比较好方法,请高手指教!(比如ping 1.1.1.99 ,这一看就知道否通)上次别人教我用下面这种方法,但是我拔掉网线,cnn.state还是adstateopen ,检测还是通的,请问高手还有什么属性可以检测的吗?if cnn.state=adstateopen then
msgbox "通的"
else
msgbox "断的"
end if
Dim Cnn As ADODB.Connection
dim m_dsn
m_dsn = "Data Source=" & Trim(ServerIP0) & ";Provider=SQLOLEDB.1;Integrated Security=;Persist Security Info=False;User ID=BookStore;PWD=xhSQL;Initial Catalog=BookStore;"set Cnn=new ADODB.Connection
Cnn.open m_dsn过几分钟后
我想查测一下Cnn是否还是在连通
不能再用Open 因为这样效率比较低
我想用一种比较好方法,请高手指教!(比如ping 1.1.1.99 ,这一看就知道否通)上次别人教我用下面这种方法,但是我拔掉网线,cnn.state还是adstateopen ,检测还是通的,请问高手还有什么属性可以检测的吗?if cnn.state=adstateopen then
msgbox "通的"
else
msgbox "断的"
end if
设置interval属性为50ms,
再把以上这段IF代码放到时间控件中实时监控试试看。。
只有在使用的时候才能发现是断开的
If Cnn.State = adStateOpen Then
HeadLin = True
Else
HeadLin = False
End If
End If
End Sub
这次改变方法如果你的数据库容易断,采用下面的函数
Public Function ConnectToDB() As Boolean
'连接数据库
ConnectToDB = TrueIf cn Is Nothing Then
Set cn = New ADODB.Connection ''设置ado的连接对象
End IfIf cn.state = adStateClosed Then ''如果其状态是关闭就重新打开 '如果是关闭的就重新连接
On Error GoTo errTrap '' 设置出错处理
cn.Open strCon ''打开连接 strCon 为一常量,定义在公共模块里面,写出来的方法按上面步骤
Exit Function
errTrap: MsgComErr ''如果出错时报错
cn.cancel ''取消连接
ConnectToDB = FalseEnd IfEnd Function
在任何对数据库操作前判断
if not ConnectToDB then
msgbox "断了,检查网络"
end if如果使用的是updatebatch
则在updatebatch之前检查也就是在任何提交到数据库前检查,这样会比较麻烦,但是不用timmer,对数据库压力小
不知道这样行不行?
我没有测试过,如果不行你可以这样,任何连接前,打开一个新的cn,看是否连上,连不上报错,此时……感觉对数据连的太多,性能有影响