关于数据库断开后重连机制的设计

ebensy 2003-11-06 10:20:16
大家知道,对于一个定位于server的程序,稳定性是很重要的,因为用户不太会操作他。
可是,如果server和数据库密切相关,而数据库是最容易发生问题的地方,如何保证server不会受到数据库的影响而依然潇洒自如呢?比如数据库暂时的中断,重启。server能否设计成自动智能处理。数据库断了就不工作,但一直尝试重连,一旦连好了在继续工作。在设计过程中我想问一个问题,就是数据库断了,AdoConnection如何知道?
在try except中如果捕获到对数据库的操作失败,并不能断定是数据库断了阿?
我的问题:
1.数据库比如oracle8重启,或者有故障,他会告诉前台一个正在和他保持连接的Adoconnection嘛?
2.前台捕获的各种数据库错误,如何归类,如何区分,adoconnection有没有提供错误码?
3.这个问题大家如何设计的?
谢谢。
...全文
247 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xfwf 2003-11-11
  • 打赏
  • 举报
回复
我认为在找不到最好方法的时候,只要有必要做,采用轮询方式检测然后不断尝试重连是最好的办法
A_ZHU 2003-11-11
  • 打赏
  • 举报
回复
可不可以换个思路,用的时候连接,不用就断开!


愚见!愚见!
A_ZHU 2003-11-11
  • 打赏
  • 举报
回复
学习!
ebensy 2003-11-11
  • 打赏
  • 举报
回复
如果是因为后台某个对象被别人改动,比如表加了一个字段,程序出错,也去重连吗?
不能因为这一个地方影像其它的访问啊。
应该是网络断开,或数据库server连接不通情况下,再重连啊。
期待高明啊。!!!
horse_h 2003-11-08
  • 打赏
  • 举报
回复
up
CloneCenter 2003-11-08
  • 打赏
  • 举报
回复
AdoConnection 有一个状态属性,可以检测连接当前的状态。
例如:
if stOpen in MyADOConnection.State then
MyADOConnection.Close();
hkbarton 2003-11-08
  • 打赏
  • 举报
回复
如果不能正常获得数据和操作数据,那都相当于数据库断了,就可以尝试重新连接
ebensy 2003-11-08
  • 打赏
  • 举报
回复
如果后台数据库断了,后台不会通知前台的adoconnection.
前台此时如果不在对数据库操作,state还是open状态,如果操作了,那末必定出错,
但错误原因前台如何知道呢,不可能对于任何错误,前台都去重新连接,只有捕获到后台服务断了,网断了等错误时,再去连接。

希望高明志士给出答案。
dickeybird888 2003-11-07
  • 打赏
  • 举报
回复
好象不行,这样的话太影响系统的效率
gdwyh 2003-11-07
  • 打赏
  • 举报
回复
高难度,学习

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧