我使用默认的独占打开记录集的方式,开启了500个线程,每个线程拥有自己的记录集对象,为什么会出现不能连接的问题,代码如下,谢谢。
成员变量:
CDatabase m_db;
初始化函数:
m_db.OpenEx(_T("DSN=MyDB"));
线程函数:
COdbctest2Dlg * pWnd=(COdbctest2Dlg *)lpvoid;
CRecordset m_rec;
m_rec.m_pDatabase=&(pWnd->m_db);
try
{
  if(m_rec.Open(CRecordset::snapshot,_T("select * from mytable")))
     m_rec.Close();
return 1;
}
catch(CDBException *e)
{
AfxMessageBox(e->m_strError);
return 1;
}

解决方案 »

  1.   

    可能是CDatabase对象不是多线程安全的,我也在看这个问题,我的问题也没有人回答是否需要对象同步访问控制啊
      

  2.   

    是不是同步需要自己使用“同步信号”比如CEvent,来管理同步吗?
      

  3.   

    是不是对数据库的连接受到数据库本身的限制。在sql server中,就有一个“并发用户连接的最大用户数目”这一选项设置。
      

  4.   

    to small_wei(small) :
    默认为0,无限制
      

  5.   

    用 CRecordset m_rec((CDatabase *)&(pWnd->m_db)); 可以么?