在记录集打开时出现了错误,发送错误报告.
CADOConnection m_pConnection;
m_pConnection.OnInitADOConnection();
CString SQL="SELECT * FROM basic";
RecordsetPtr m_set=m_pConnection.GetRecordset(SQL);//在记录打开
//现封装了ADO
//连接数据库
void CADOConnection::OnInitADOConnection()
{
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
_bstr_t strConnection="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Department.mdb";
m_pConnection->Open(strConnection,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
//打开记录
_RecordsetPtr& CADOConnection::GetRecordset(CString SQL)
{
HRESULT hr;
if(m_pConnection==NULL)
OnInitADOConnection();
m_pConnection.CreateInstance(__uuidof(Recordset));
try
{
m_pRecordset->Open(SQL.AllocSysString(),
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
return m_pRecordset;
}
//请问问题处在那?
//我经常碰到内存异常的问题.

解决方案 »

  1.   

    if(m_pConnection==NULL)
        OnInitADOConnection();
    m_pConnection.CreateInstance(__uuidof(Recordset));  // 这里错了
    ----------------
    m_pRecordset.CreateInstance(__uuidof(Recordset));
      

  2.   

    m_pConnection.CreateInstance(__uuidof(Recordset));?
      

  3.   

    1、m_pConnection.CreateInstance(__uuidof(Recordset)); 这个语句了。
    2、LZ是不是想创建数据集,如果是这样,那么也不能返回,因为是局部变量,会导致异常。
    3、可以尝试在读取的时候就传递一个参数,这个参数类型是数据集类型的引用,然后直接对这个参数操作,这样就不需要再返回这个数据集了,这样会减少错误,因为引用必须存在。
      

  4.   

    100分
        Thanks very much!!!
      

  5.   

    m_pConnection.CreateInstance(__uuidof(Recordset)); 这个语句了。
    中的m_pConnectin改成m_pRecordset就可以了
    是实例创建错误了
      

  6.   

    看lz的回复,问题是已经解决了。lz能把这个帖子结一下吗?由于帖子提前,还以为有什么问题,偶已经点击不下5次了。谢谢lz了,问题解决尽快结贴(可以不给分),但请节约大家的时间。
      

  7.   

    http://blog.csdn.net/wang921718/archive/2007/07/19/1698490.aspx
    看看这里,我的BLOG,希望能对你有帮助!
      

  8.   


    while((!add1.empty())&&(!add2.empty()))//个位数加起直到 加数的位数加完
    {
    int end=add1.top()+add2.top();
    if(end>=10)//各位数相加大于10
    {
    if(flag)//有进位
    resualt.push(end-9);
    else
    resualt.push(end-10);
    flag=true;
    }
    else
    {
    if(flag)
    {
    resualt.push(end+1);
    flag=false;
    }
    else
    resualt.push(end);
    }
    add1.pop();
    add2.pop();
    }