ado 如果断开 怎么重连????

mandarin 2010-06-13 10:39:30
ado连接oracle数据库,如果连接长时间不用被防火墙端口后,怎么重连?
用简单的先close,在open 不行,有高手知道怎么解决吗?
...全文
549 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
言墨此生 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
试出来了,close后sleep 3秒钟就可以连上了,之前是sleep 2秒钟后在open的,哎
[/Quote]
这个方法有用,哈哈,谢谢你啦。楼主竟然没采纳?
yudechibang88 2010-07-22
  • 打赏
  • 举报
回复
socketcn吧!
SQLDebug_Fan 2010-07-22
  • 打赏
  • 举报
回复
重新创建重连的代价不大,就是创建一个对象,瞬间完成。
mandarin 2010-07-22
  • 打赏
  • 举报
回复
重新创建重连是可以的,但是觉得代价比较大
mandarin 2010-07-22
  • 打赏
  • 举报
回复
试出来了,close后sleep 3秒钟就可以连上了,之前是sleep 2秒钟后在open的,哎
Harryfin 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liangqingzhi 的回复:]
所以我怀疑是控件的原因,我建议楼主的TADOConnect控件使用动态生成,发现连接被隔断之后,释放掉这个控件重新创建。
[/Quote]
这样你所有数据集控件的CONNECTION引用都要重新赋值一次..
xjwy 2010-06-17
  • 打赏
  • 举报
回复
学习,帮你顶
yct0605 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liangqingzhi 的回复:]
以前用delphi做oracle项目的时候,也遇到这个问题。被防火墙隔断,会变成空连接,客户端这边不会有断开的提示。
如果是普通的socket链接的话,用Close再Open是没问题的,oracle连接就没用,一直没有解决。
后来改用PRO *C来开发,处理这种情况,是执行了sql之后,会返回ora-XXXX类似这样的连接失败错误,这时重新调用oracle的sql语句connect重连就OK
……
[/Quote]
推荐使用这种方法,动态创建控件,跟踪错误信息。
haitao 2010-06-17
  • 打赏
  • 举报
回复
我ado连sql2000/2005,断了直接再open就行的

是不是连oracle就是比较特别?而且是出错后导致的断开,才这么特别?
mandarin 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liangqingzhi 的回复:]
以前用delphi做oracle项目的时候,也遇到这个问题。被防火墙隔断,会变成空连接,客户端这边不会有断开的提示。
如果是普通的socket链接的话,用Close再Open是没问题的,oracle连接就没用,一直没有解决。
后来改用PRO *C来开发,处理这种情况,是执行了sql之后,会返回ora-XXXX类似这样的连接失败错误,这时重新调用oracle的sql语句connect重连就OK
……
[/Quote]
如果是普通的socket链接的话 这个什么意思,我用TADOConnect控件close再open也不行。。。。
麦客来了 2010-06-13
  • 打赏
  • 举报
回复
检测到断开以后的操作就是重新连接
XD王 2010-06-13
  • 打赏
  • 举报
回复
Lz 问的是怎么重连而不是断开检测吧..
抢板凳候高手答疑~
麦客来了 2010-06-13
  • 打赏
  • 举报
回复
写一个TConnectionHelper类包装AdoConnection,在这个类中处理断开检测逻辑,AdoQuery等访问数据库的类都从TConnectionHelper类中获取Connection。
ahaqcjm 2010-06-13
  • 打赏
  • 举报
回复
是否可试用ADOCONTION组件,在程序中给ADOCONTION.string赋值
hsmserver 2010-06-13
  • 打赏
  • 举报
回复
楼上的好久没冒泡了
老之 2010-06-13
  • 打赏
  • 举报
回复
以前用delphi做oracle项目的时候,也遇到这个问题。被防火墙隔断,会变成空连接,客户端这边不会有断开的提示。
如果是普通的socket链接的话,用Close再Open是没问题的,oracle连接就没用,一直没有解决。
后来改用PRO *C来开发,处理这种情况,是执行了sql之后,会返回ora-XXXX类似这样的连接失败错误,这时重新调用oracle的sql语句connect重连就OK

所以我怀疑是控件的原因,我建议楼主的TADOConnect控件使用动态生成,发现连接被隔断之后,释放掉这个控件重新创建。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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