ado连接oracle数据库,如果连接长时间不用被防火墙端口后,怎么重连?
用简单的先close,在open 不行,有高手知道怎么解决吗? 

解决方案 »

  1.   

    写一个TConnectionHelper类包装AdoConnection,在这个类中处理断开检测逻辑,AdoQuery等访问数据库的类都从TConnectionHelper类中获取Connection。
      

  2.   

    以前用delphi做oracle项目的时候,也遇到这个问题。被防火墙隔断,会变成空连接,客户端这边不会有断开的提示。
    如果是普通的socket链接的话,用Close再Open是没问题的,oracle连接就没用,一直没有解决。
    后来改用PRO *C来开发,处理这种情况,是执行了sql之后,会返回ora-XXXX类似这样的连接失败错误,这时重新调用oracle的sql语句connect重连就OK所以我怀疑是控件的原因,我建议楼主的TADOConnect控件使用动态生成,发现连接被隔断之后,释放掉这个控件重新创建。
      

  3.   

    是否可试用ADOCONTION组件,在程序中给ADOCONTION.string赋值
      

  4.   

    如果是普通的socket链接的话   这个什么意思,我用TADOConnect控件close再open也不行。
      

  5.   

    我ado连sql2000/2005,断了直接再open就行的是不是连oracle就是比较特别?而且是出错后导致的断开,才这么特别?
      

  6.   

    这样你所有数据集控件的CONNECTION引用都要重新赋值一次..
      

  7.   

    试出来了,close后sleep 3秒钟就可以连上了,之前是sleep 2秒钟后在open的,哎