以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 解决远程数据库网络错误的最佳办法 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=61711) |
-- 作者:程兴刚 -- 发布时间:2014/12/17 17:34:00 -- 解决远程数据库网络错误的最佳办法 很多狐友都在提远程数据库模式下,因网络不稳定,导致系统报错和假死现象,经过我自己的琢磨和总结给出一个简单的解决办法,仅供借鉴: 通常报错截图如下:
首先可以肯定,出现这个错误不在项目客户端本身,而是在对数据“存取”过程中发生的,这就让我们对解决这个问题的办法有了靶向思维,看看下面:
第一步:增加一个逻辑型全局变量暂且命名为:网络状态 第二步: NetworkAddressChanged事件代码 Vars("网络状态") = TryConnectHost(www.jinyt.com) \'数据库服务器地址
第三步:项目属性BeforeSaveProject事件代码: If Vars("网络状态") = False e.Cancel = True MessageBox.show("对不起,当前网络或服务器不可用,请稍后再保存数据!") End If 第四步: 假设在您的项目的计划管理定里面设计了定时备份的代码,这里的代码写为这样: If Vars("网络状态") = True Syscmd.Project.Backup("f:\\****系统备份",True) \'自动备份路径 End If 以下内容只有回复后才可以浏览
说明:大家可能要说,这个方法很复杂,为什么要全局变量?我们首先要了解NetworkAddressChanged事件的功能,他是在网络IP地址发生变化后执行,当远程数据库服务期无法连接,就不能获取到有效的IP地址,原来有效的IP地址在此时发生了变化,可以用该事件监控网络,因此,在这里随时用逻辑型全局变量来保存网络状态,大家就大可不必在什么计划中、或者定时器中频繁地去判断网络是否可用(省去了因不同网速导致的很多时间),而只是在IP地址在此时发生时自动保存了当前状态,然后我们在众多的地方去判断全局变量的值(调用全局变量的值时间快速多了,且不受网络影响),就知道网络状况,让计算机有大部分的时间空闲下来,这就是在这里增加全局变量真实意义,不容忽视。
以上方法看似复杂,其实很简单,只不过是通过多事件的运行逻辑协同作战而已,为了避免上述错误,这个NetworkAddressChanged是我向贺老师专门提出来后增加上去的,早就解决了,只是大家没切身体会到他的好处而已!
如果您还需要您的程序严谨一点,可以在项目属性的BeforeOpenProject事件中加上如下代码,如果数据库无法连接,项目程序将拒绝打开: If TryConnectHost(www.jinyt.com) ‘判断数据库服务器可用状态,这里为什么不用全局变量,大家想想就知道了!
|
-- 作者:有点甜 -- 发布时间:2014/12/17 17:50:00 -- 但是,能访问服务器,不代表能连上数据库。
其实还可以在 BeforeShowErrorMessage 事件,判断是否一般性错误,如果是的话提示或者退出系统即可。 |
-- 作者:程兴刚 -- 发布时间:2014/12/17 18:08:00 -- 反正我设置了这个以后,基本上没有出现什么问题了,如果是数据库用户名、端口、密码问题我没纳入到不在这个问题解决范畴! 那是在BeforeConnectOuterDataSource事件专门处理的!
…… If Connections.TryConnect(s) = False Then |
-- 作者:lsy -- 发布时间:2014/12/17 18:16:00 -- 先顶上,再琢磨。 |
-- 作者:lyfxybc -- 发布时间:2014/12/17 18:33:00 -- 紧跟各位老师,顶
学习 |
-- 作者:andy123 -- 发布时间:2014/12/17 19:07:00 -- 这么好的东西,不顶不行啊 |
-- 作者:L88919138 -- 发布时间:2014/12/17 19:09:00 -- 学习 |
-- 作者:pcxjxjhkw -- 发布时间:2014/12/17 19:23:00 -- 学习 |
-- 作者:逛逛 -- 发布时间:2014/12/17 19:58:00 -- 先顶程版
再画圈圈,慢慢琢磨。 |
-- 作者:chnfo -- 发布时间:2014/12/17 20:16:00 -- 远程连接普遍,局域网里应当也可以借鉴 |