我用DAO对Access2000数据库进行操作。数据库打开后存在一个全局变量中,但是在自己建立的线程中打开该数据库的表格是就会出错,弹出一个MessageBox,信息为“Unhandled exception in app.exe (DAO360.dll):0xC0000005:Access Violation.”。其它线程也会出现同样的问题。
我把Access2000换成Access97就不会出现这样的问题。
不知道为什么!

解决方案 »

  1.   

    这是非法内存操作哦!小心啊!你是不是那里有指针没有初始化就在用啊,或者COM对象没有事例化就在用啊!
      

  2.   

    同意hjunxu(hjun)
    这是写数据库程序时候的程序错误,和数据库其实没什么关系,检查一下
    程序吧 !!!!
      

  3.   

    不对呀,开始我也有类似的怀疑,于是我另外用MFC向导生成了一个project,在其中写了一个线程,然后在线程中用DAO进行数据库的初始化,也是在打开数据库表的时候出现上面提到的问题。而当我把这个Access2000转换为Access97后就没有这样的问题了。
    访问这两种数据库时其代码只有一句话的差别:
    #ifdef _AFXDLL
    AfxGetModuleState()->m_dwVersion = 0x0601;
    #endif
    不知道为什么,会不会是Access2000的一个bug?
      

  4.   

    1.  DAO是不支持多线程的2.  DAO驱动好像是不支持Access2000的
      

  5.   

    DAO驱动肯定支持Access2000的,因为如果不在自己写的线程中用DAO访问Access2000是正确的。
    DAO也是支持多线程的,因为我的代码中用DAO访问Access97是正确的。
      

  6.   

    DAO是肯定不支持多线程的,不信你去查资料。
    至于Access2000我不敢肯定