我用vc appwizard开发了一个基于对话框的数据库管理系统,用ado访问数据库,在initdialog()中建立连接,然后再destroy()中关闭连接和释放环境。编译都没问题,就是进行了对数据库访问之后,在关闭主对话框后,弹出一个错误提示对话框,提示是:Runtime error!  abnormal program termination找遍很多书,也查不到怎么解决这个问题啊,敬请高手指教,不胜感谢!

解决方案 »

  1.   

    在destroy()里要让ado对象都为NULL
    例如: m_db=NULL;  m_record=NULL;
    不要用 m_db.close();
      

  2.   

    什么资源没有释放吧!或者在destroy的时候释放的指针为空。
      

  3.   

    不能在 destroy()进行这个处理。
      

  4.   

    最好在析构函数中释放指针如:
    if(m_pConnect != NULL)
        m_pConnect = NULL;
      

  5.   

    好像不只是和数据库访问的问题,我定义了一个按钮,打开另外一个对话框,然后关闭,在关闭主对话框时,也会出现哪个问题,以下是提示错误:
    f:\考生考试系统\debug\msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
    Compiling...
      

  6.   

    就是释放指针的问题,把释放指针的语句去掉就没错误了。但为什么有释放指针就会错误呢?我刚才尝试着用if(m_pCons!=NULL)  m_pCons!=NULL;并且在析够函数函数理也还有这个错误……不明白?
      

  7.   

    不能在 destroy()进行这个处理。
    要把握处理的时间长度,这里只允许很短时间的操作
      

  8.   

    为什么不在??APP的InitInstance中连,在ExitInstance中释放呢?
      

  9.   

    f:\考生考试系统\debug\msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
    Compiling...
    这是正常的,只要是引入ADO库就会这样。