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...
是怎么回事儿呢?谢谢.
try
{
m_pRecordset->Open("SELECT * FROM Table1", theApp.m_pConnection_db.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}抛出异常:Access Violation...
是怎么回事儿呢?谢谢.
把"SELECT * FROM Table1"变成_bstr_t类型的试试
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=books.mdb","","",adModeUnknown);///连接数据库
///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51; }
原来声明的m_pRecordset为全局变量,后来改为局部变量就通过了.
因为我是在dll工程中实现数据库访问的功能的,如果声明为全局变量,可能会存在资源分配方面的弊端... 不知道是不是这个原因.^_^