我用ADO连接SQL-SERVER,怎么能解决由于网络中断造成的数据保存出错问题?(50分)

  • 主题发起人 主题发起人 hzzkf
  • 开始时间 开始时间
H

hzzkf

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,当客户端网络中断后,即使用户不进行任何操作并且网络再次连通,原ADO的连接
仍会提示出错。怎么解决此问题?
大家可以试一下,就放一个ADOConnection1和ADOQuery1,用ADOQuery1连ADOConnection1,
数据库是服务器上的SQL-SERVER.在ADOQuery1中的SQL中写一个SELECT的语句。
然后在一个BUTTON的事件中写ADOQuery1.CLOSE;ADOQuery1.OPEN.当网络连接正常时,
此事件正常应用。只要你将网线拔除后再插上,此事件就会出错。怎么解决?
以前在DOS下做的程序,只当网络断时执行事件什么的才会去检测网络连接。
现在我碰到这个问题比较麻烦。许多网络不太稳定的用户在输入一大段东西后保存时即提示
出错。其实在保存时网络是好的,无非在输入过程中网络曾断开过。我只想效果能和DOS下
一样就可以了。


 
用事务处理就可以了!
 
我就是用事务处理的,况且还没执行有事务处理的东西呢。只不过简单的CLOSE后再OPEN的
事件就出错了。
 
ADOConnection1的Connected先设成false,然后再设成true,即重新建立一下连接。
然后再执行ADOQuery1的Open。
 
我用BDE时也出过相同的错误,检查原因,我发现在网络断开又连接好后,SQL语句虽然可以发送
到服务器,但是会返回''与服务器通信失败''的错误。
我的解决办法是:
每次Open出错时,检查错误类型,如果是网络问题,不打开。如果不是网络问题,断开
DBConnection1的连接重新连接后 再打开Query,一切正常。
我没有时间用ADO试,估计原因差不多吧。
 
我不是找不到重新连接的方法,如果用户是用UPDATEBATCH模式提交数据,即使重连接,
还有什么意义吗?
 
你可以在提交数据之前判断(先执行一个简单的SQL,如 select 1)一下网络状况以及和服务器的通信情况,如果正常,进行提交。
否则 ,1、如果网络不正常,提示网络问题,保存在本地,等网络恢复后在提交到服务器。
2、如果网络正常,但是不能和服务器通信,就ADOConnection1.Connected := false;
ADOConnection1.Connected := true; 后提交数据。
我在BDE通过EDBEngineError得到错误类别,在用ADO时可能比较麻烦,必须通过ADO的Errors对象
中取得错误原因
 
保存到本地呀,等网络通了在判断一下本地是否有没有提交的数据,再次提交了,
 
后退
顶部