用多线程操作数据库,共用1个ADOConnection,用ADO返回结果或操作问题:有时结果集无法返回,甚至有时造成当机(程序自动关闭)这是乍回事啊,是不是链接溢出还是其他什么问题?该如何解决。

解决方案 »

  1.   

    1、多线程使用VCL组件本身就不可取
    2、用多线程操作数据库?追求什么效果?
      

  2.   

    http://topic.csdn.net/t/20050114/22/3727165.html
      

  3.   

    不是组件,是创建的一个ADOConnection的连接池
      

  4.   

    应该用DATAMODEL来定义,引用数据源,如果共用ADOConnection的连接池,在程序里面有内存泄露的话有可能会出错,或者有死循环。
      

  5.   

    可以异步返回的. 用线程的话,就得用一个独立的 Connection 
      

  6.   

    多线程不能共用一个ADOConnection,因为这样多个Query共用一条通道链接数据库,当任意一个Query出现问题阻塞通道,所有线程将无法正常工作。所以,每一个线程创建一个ADOConnection。
      

  7.   

    异步返回设置ConnectOptions := coAsyncConnect就可以了,如果多线程操作数据库,要使用连接池,每个线程一个连接。CnPack中有一个ADO连接池。
      

  8.   


    异步返回,只要一个ADOConnection就够了吗?
      

  9.   

    比用单个ADOConnection等待的性能是有提高的。
      

  10.   


    如果异步调用中,结果集未返回。再用这个共用得ADOConnection去处理其他的数据库操作,会冲突吗
      

  11.   

    ADOConnection如果你动态创建就不成问题,共用肯定出错,还有时有些线程会死掉,之前我共用过IDHTTP最后动态创建就不成问题了
      

  12.   

    如何知道ADOConnection是否正在被使用?
      

  13.   

    现在ADOConnection已经是动态创建了,是用连接池的方式,但使用过程中会发现‘异步连接时,操作不能被执行’