一个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 开发人员指南》
[解决办法]
试试加锁