char xmlBuffer[1024];
_StreamPtr pStr;
if(FAILED(pStr.CreateInstance(__uuidof(Stream))))
pStr.Release(); hr = m_rs->Save(pStr.GetInterfacePtr(),adPersistXML);
_variant_t var   = pStr->ReadText(adReadAll); 
strcpy(xmlBuffer,var.bstrVal);//现在我需要反向操作,把xmlBuffer里的数据最终用_RecordsetPtr表示.
谁能告诉我,我尝试了没成功:
_StreamPtr pStream;
if(FAILED(pStream.CreateInstance(__uuidof(Stream))))
pStream.Release();
_bstr_t bt = str;
//下步异常
hr = pStream->WriteText(bt,adWriteChar);
        m_rs->Close();
hr = m_rs->Open(pStream.GetInterfacePtr(),vtMissing, adOpenForwardOnly,adLockReadOnly,adCmdFile); 

解决方案 »

  1.   

    //将内存的XML读入_StreamPtr
    _StreamPtr pStream;
    HRESULT hr;
    if(FAILED(pStream.CreateInstance(__uuidof(Stream))))
    pStream.Release(); try{
    variant_t vari(DISP_E_PARAMNOTFOUND,VT_ERROR);
    pStream->PutType(adTypeText);
    hr = pStream->Open(vari,adModeUnknown,   adOpenStreamUnspecified, _bstr_t(_T("")),   _bstr_t(_T(""))); _bstr_t bt = pwText;
    hr = pStream->WriteText(bt,adWriteChar);
    }catch(_com_error e)
    {
    MessageBox((char*)e.Description());
    } try{
    _RecordsetPtr  m_rs;

    if(FAILED(m_rs.CreateInstance(__uuidof(Recordset))))
    m_rs.Release();
    pStream->Position = 0;
    hr = m_rs->Open(pStream.GetInterfacePtr(),vtMissing, adOpenForwardOnly,adLockReadOnly,adCmdFile);