首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

一个connection多个query并发时的有关问题

2012-03-15 
一个connection多个query并发时的问题我在主线程中,创建了一个tadoconnection,然后在线程中创建tadoquery,

一个connection多个query并发时的问题
我在主线程中,创建了一个tadoconnection,然后在线程中创建tadoquery,并把tadoconnection变量赋给了tadoquery变量。就是这种关系,然后在线程中进行一次查询,当并发量大时,就提示说:连接占线导致另一个命令。

在网上搜了一下,有的说tadoconnection不支持多线程,有的说是可以。晕了。

当然,也有的建议说在在线程中创建tadoconnection,也就是每一个线程一个连接。虽然这样可以解决问题,但是不太实际的吧。

请教解法。


这是主线程的。
try
        {
          adoConn   =   new   TADOConnection(NULL);
                adoConn-> ConnectionString   =   "Provider=SQLOLEDB.1;Password=sa;Persist   Security   Info=True;User   ID=sa;Initial   Catalog=pubs;Data   Source=127.0.0.1 ";
                adoConn-> Connected   =   true;
        }

这个是在子线程中用的:
TADOQuery   *   qry   =   new   TADOQuery(NULL);
        try
        {
        qry-> Connection   =   tadoconn;//就是主线程中创建的connection
        qry-> Active   =   false;
        qry-> SQL-> Clear();
        qry-> SQL-> Add( "select   au_lname   from   authors   where   au_id   =   \ ' ");
                qry-> SQL-> Add(AnsiString(data-> Buff));
                qry-> SQL-> Add( "\ ' ");
        //qry-> Parameters-> Items[0]-> Value   =   data-> Buff;
        qry-> Active   =   true;
        }

[解决办法]
ding
[解决办法]
好象没有这种问题
[解决办法]
tadoconnection是支持多线程,具体见《C++ Builder 开发人员指南》
[解决办法]
试试加锁

热点排行