我写一个程序,用ADO访问ACCESS数据库。
在多个线程中用recordset的update方法更新数据库,它们共享一个连接。
经常出现"该操作不被允许"的错误.
有什么方法能解决该问题,当然前提还是希望共享一个连接,因为不可能
为每一个recordset开一个连接

解决方案 »

  1.   

    共享一个连接没有问题,问题是你打开的是同一个数据集对象吗?如果是是否别的线程已经关闭了数据集对象,你还在Update就可能出现这样的错误。
      

  2.   

    //m_pConnectionPrgDB是_ConnectionPtr变量
    CString strSQL;
    strSQL = "delete from program where programID ="+strPrgID;
    try
    {
         m_pConnectionPrgDB->BeginTrans();
         m_pConnectionPrgDB->Execute(_bstr_t(strSQL),NULL,NULL);
         m_pConnectionPrgDB->CommitTrans();
    }catch(...)
    {
         AfxMessageBox("error");
         return;
    }
      

  3.   

    是两个不同的recordset对象,
    但访问同一个表
      

  4.   

    Access不支持多线程。
    所以你不能同时打开同一个表。
      

  5.   

    ACCESS好象是支持多用户的,既然支持多用户
    就应该是支持多线程的呀
      

  6.   

    谁说ACCESS不支持多线程?我这里为什么就可以啦?
    不能用DAO,这个是不支持多线程的。
    OLE DB可以,但是如果共享一个连接还是比较麻烦的,线程退出的时候资源卸载比较麻烦。建议每次都新开一个连接,我做过测试,OLE DB连接ACCESS是很快的。
      

  7.   

    我用的是ADO,请各位帮忙解决问题
    出现"该操作不被允许"这中错误,也许还有其他原因。