BOOL flag = TRUE;
    
    ::CoInitialize(NULL);
    _ConnectionPtr m_pConnection = NULL;
    _RecordsetPtr m_pRecordset = NULL;
    try
    {
      /*  HRESULT hr = m_pConnection.CreateInstance(__uuidof(Connection));//创建连接实例
       m_dbstr.Format(_T("driver={SQL Server 2000};Server=%s; DATABASE=%s; UID=%s; PWD=%s;"), "local", "PushPower", "wyt", "0215"); 
        _bstr_t strConnect= m_dbstr;//"Provider=SQLOLEDB;Server=192.168.1.64;Database=mserver; uid=mserver; pwd=mserver;";        m_pConnection->Open(strConnect,L"",L"",adModeUnknown);//打开连接
        if(m_pConnection==NULL)
            return FALSE;
*/
                      // 创建记录集对象
        m_pRecordset.CreateInstance(__uuidof(Recordset));
                         // 取得表中的记录
        m_pRecordset->Open((_bstr_t)sql,m_pConnection.GetInterfacePtr(),
            adOpenDynamic,adLockOptimistic,adCmdText);//出错点 出错点        int columnsSize = m_pRecordset->Fields->GetCount();        while (!m_pRecordset->EndOfFile)
        {
            result.AddTail(new CMapStringToString);
            for(int j = 0; j < columnsSize; j++)
            {
                FieldPtr fPtr = m_pRecordset->Fields->GetItem((long)j);
                _variant_t vName = fPtr->Name;
                _variant_t vValue = fPtr->Value;
                CString name((WCHAR*)(_bstr_t)vName);
                CString value = _T("");
                if(vValue.vt != VT_NULL)
                    value.Format(_T("%s"),(WCHAR*)(_bstr_t)vValue);
                ((CMapStringToString*)result.GetTail())->SetAt(name,value);
            }
            m_pRecordset->MoveNext(); ///移到下一条记录
        }
        m_pRecordset->Close(); // 关闭记录集
    }
    catch(_com_error e)
    {
        flag = FALSE;
    }
    if(m_pRecordset->State)
        m_pRecordset->Close();
    if(m_pConnection->State)
        m_pConnection->Close();
    ::CoUninitialize();