m_pRecordset.CreateInstance(__uuidof(Recordset));
try
    {
m_pRecordset->Open("SELECT * FROM Table1", theApp.m_pConnection_db.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
    }
catch(_com_error *e)
    {
AfxMessageBox(e->ErrorMessage());
    }抛出异常:Access Violation...
是怎么回事儿呢?谢谢.

解决方案 »

  1.   

    只有这些代码吗?
    把"SELECT * FROM Table1"变成_bstr_t类型的试试
      

  2.   

    调试看看m_pRecordset里成员变量的值。
      

  3.   

    确认指定的数据库文件中有“Table1”这个数据表,且保证你采用的数据Jet和这个文件的版本一致,如:
    hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=books.mdb","","",adModeUnknown);///连接数据库
    ///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;  }

      

  4.   

    搞定了,谢谢大家的回复.
    原来声明的m_pRecordset为全局变量,后来改为局部变量就通过了.
    因为我是在dll工程中实现数据库访问的功能的,如果声明为全局变量,可能会存在资源分配方面的弊端... 不知道是不是这个原因.^_^