S seago Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-04 #1 使用TDatabase连接到数据库后, 当数据库服务器DOWN掉 或者网络断开,或者只是数据库连接断开时,该如何判断?
P pengjinhua Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-05 #2 if DMod.DataBase.connected then ... else showMessage('数据库连结失败'); 在每次用数据库时,加一个判断
S seago Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-06 #4 Connected属性不能自动改变,只有显式对它进行更改时才会改变, AfterDisconnect事件也是当Connected:=False时才会触发,因此 当数据库连接断开时不能使用TDatabase来判断。
Connected属性不能自动改变,只有显式对它进行更改时才会改变, AfterDisconnect事件也是当Connected:=False时才会触发,因此 当数据库连接断开时不能使用TDatabase来判断。
C Crab Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-06 #5 要不就另建一个 tdatabase ,是你用到的这个的副本,试图 connect 这个,如果能通, 则说明你当前的连接没有问题,否则可能已经断了。
N netfly Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-07 #6 在APPLICATION的onexception里去判断。如果PING服务器没有反应,就是服务器down了,或网络断了。
L li_tj Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-07 #7 netfly: 这样不行的,如果只是数据库服务不能运行, 而不是对方的数据库服务器垮了,那么你 肯定可以ping的通,但是还是无法使用数据库 的服务。
J jqw Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-08 #8 timer ontimer event get some data from a simple table
S seago Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-08 #9 如果每次访问数据库时,只要出现异常就当作是数据库 连接已断开,这种处理合适吗? try With Query1 do begin ... ... Open; end; except on E:EDatabaseError do ShowMessage('数据库已经断开,请重新连接!'); end; 本想对E.Message进行判断来确定数据库是否断开,但发现连不上 数据库时,DBMS不同E.Message也会不一致。
如果每次访问数据库时,只要出现异常就当作是数据库 连接已断开,这种处理合适吗? try With Query1 do begin ... ... Open; end; except on E:EDatabaseError do ShowMessage('数据库已经断开,请重新连接!'); end; 本想对E.Message进行判断来确定数据库是否断开,但发现连不上 数据库时,DBMS不同E.Message也会不一致。
M mmm188 Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-12 #10 seago的处理在查询命令出错下不妥。 还是使用一条简单的查询命令检测较好! cmd:='select * from tempdb'; Query1.close; Query1.Sql.clear; Query1.Sql.add(cmd); try Query1.Open; except ShowMessage('数据库已经断开,请重新连接!'); end;
seago的处理在查询命令出错下不妥。 还是使用一条简单的查询命令检测较好! cmd:='select * from tempdb'; Query1.close; Query1.Sql.clear; Query1.Sql.add(cmd); try Query1.Open; except ShowMessage('数据库已经断开,请重新连接!'); end;
Z zwhc Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-12 #11 >>来自:seago 时间:00-12-8 22:08:53 ID:413244 >>如果每次访问数据库时,只要出现异常就当作是数据库 >>连接已断开,这种处理合适吗? 可以呀,我们就是这样的,省心省事
>>来自:seago 时间:00-12-8 22:08:53 ID:413244 >>如果每次访问数据库时,只要出现异常就当作是数据库 >>连接已断开,这种处理合适吗? 可以呀,我们就是这样的,省心省事
青 青子衿 Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-13 #13 同意小猪,帮助文档中有相应的出错类型和类型码,研究一下吧,不会花 太多时间 出现异常就当数据库已断开并不可靠和正规 频繁提示数据库断开会使用户很恼火和疑惑,而且为你的维护绝对 带来很大的麻烦,不要杀鸡取卵哟!
同意小猪,帮助文档中有相应的出错类型和类型码,研究一下吧,不会花 太多时间 出现异常就当数据库已断开并不可靠和正规 频繁提示数据库断开会使用户很恼火和疑惑,而且为你的维护绝对 带来很大的麻烦,不要杀鸡取卵哟!
S seago Unregistered / Unconfirmed GUEST, unregistred user! 2000-12-13 #14 谢谢各位! 只有这么点分,不好意思再讨论下去,就此结束吧! 根据小猪和青子衿的提示,查看了BDE.INT文件, 找到了ERRCAT_NETWORK等错误代码,如此就可根据E.Errors[0].Category, E.Errors[0].SubCode,E.Errors[0].ErrorCode等的值做相应处理了!
谢谢各位! 只有这么点分,不好意思再讨论下去,就此结束吧! 根据小猪和青子衿的提示,查看了BDE.INT文件, 找到了ERRCAT_NETWORK等错误代码,如此就可根据E.Errors[0].Category, E.Errors[0].SubCode,E.Errors[0].ErrorCode等的值做相应处理了!