在平时写C/S结构的系统时,在客户端数据不是特别大的环境中(比如<50个),对于客户端ADO的连接方案,很多朋友都是采取以下:(其实我自己也是)
    ·客户端应用程序启动时,建立ADO连接
    ·程序结束时,断开并释放ADO连接。这种连接方案的效果是显而易见的,ADO连接在程序的运行周期内只需建立一次,减少了频繁建立连接所造成的开销。
----------------------------------------------------------------------------------------------
    若在客户端程序运行期间,ADO异常断开(引发的原因如网络中断或服务器异常等…)的情况下,执行客户端读写数据库的功能时,将会产生错误...对于这种情况可以通过ADO.Connection.State属性来判断ADO的当前连接情况,如    If connn.state<>adStateOpen then
msgbox "数据库连接已经断开,请关闭窗口,重新登入!",vbinformation,"连接无效!"
Unload Me
    End If 在实现工程中,我通常是这样处理这类异常的:
    1.在所有的涉及数据库操作的任务中,前置上述代码判断,连接不可用则向用户提示.(缺点: 太多过程中要用到此判断代码...)
    2.后置的方式:
        on error goto ErrorH:
...
数据库操作相关的代码
...        ErrorH:
...
----------------------------------------------------------------------------------------------
上述的方法,虽然可以实现功能,但个人感觉也不是特别理想。希望各位隐身的高手批评指正..现向各位公开征集一下这方面的处理方案,以为交流学习,也为后来者提供参考。欢迎各位顶贴..谢谢!
好的VB开源代码太少...大家都在闭门造车啊..郁闷! 准备把自己的三层结构的C/S系统完全共享出来...(绝对商业软件,不过得把它先卖掉后,嘿嘿!)

解决方案 »

  1.   

    写个公用函数如:Public Funtion GetConnection() as Adodb.Connection如果全局变量的Conn状态关闭,重连
    如果正常,直接返回.
      

  2.   

    不太可取,当网络故障或其它原因引发断开时,最好的办法是显示提示信息给用户...再建立ADO连接的用处不大.
      

  3.   

    得,看样子大家都没有弄明白我的用意:    征集一下大家在ADO异常断开时的解决方案..(上面贴出来的仅是我自己的处理方法)..
            以及
        创建ADO连接的时机及生命周期...
      

  4.   

    我觉得一个客户开始连一下,结束连一下的方法要看客户操作时间多长了如果按照流程连接,可能减少断开的可能性。比如一次出货一次连接(也许出货包含几个步骤,但是同用一个连接),出货结束释放conn.我处理错误的方式也是后置on error如何如何
    1.报告错误信息,告诉客户网络断了
    2.报告流程步骤,在哪里网络断了,操作无法进行
    3.选择重新连接我是这样做的,看看大家的想法
      

  5.   

    现在都是即用即连,就像ado.net的思想,连接总是不可靠的
    要处理的时候连一下
      

  6.   

    当然,对于客户端相当多的情况,即用即连的方法是最好...量少的时候呢?
    看了一遍关于ADO优秀编程经验的文章,上面建议在客户端量少的情况下,保持ADO连接,以减少频繁建立连接的次数...原因是由于量少,从一开始就建立连接直到APP结束,提高了应用程序的性能
      

  7.   

    我的做法:on error goto 不要省,每个函数里有一个,至少有数据库操作的地方要有;
    用一个统一的全局函数处理错误,通过err.number 来区分
    比如err.number=7,就提醒用户内存不足了如果错误代码为以下之一:
    -2147467259  -2147418113  -2147217871
    刚提示连接失败,并尝试重连(也可以在重连失败后再提示,但注意用户已经等待了15或30秒,这里重连时超时时间可以设为1秒)。突出“网络或服务器”的问题,不然用户会怀疑你的程序-_-
      

  8.   

    我是把服务器路径放到INI文件中,需要时直接调用即可