可能几个str中有空的,转换成char*就成了NULL,就非法操作了!
先检查一下CString中的东西!

解决方案 »

  1.   

    =》ndy_w(王麻子) 
       我跟踪了,肯定没有str为空的情况!
      

  2.   

    你可以捕获异常, 然后在异常中访问Connection的Errors,就样这可获取详细的错误信息,以便解决问题:
    详细的办法如下:
    catch(_com_error)
    {
    m_bResultFlag = false;
    m_sResultString = "创建数据集出错。";
    m_sResultString += ConstructErrorString(*(m_pConnection->Errors));
    }//由Errors集合出关于错误信息的字符串
    string ConstructErrorString(Errors &errors)
    {
    stringstream errorStringStream;
    ErrorPtr errorPtr;
    try
    {
    long nCount = m_pConnection->Errors->Count;
    bool bHaveADOError = false;
    for(long i = 0; i < nCount; i++)
    {
    errorPtr = errors.GetItem(i);
    errorStringStream<<"\n\tError #"
    <<errorPtr->Number
    <<"\n\t\t"<<(LPCSTR)errorPtr->Description
    <<"\n\t\tSource:"<<(LPCSTR)errorPtr->Source;
    //<<"\n\t\tSQL State:"<<(LPCSTR)errorPtr->SQLState;
    //<<"\nNative Error:"<<(LPCSTR)errorPtr->NativeError //产生访问异常错误
    bHaveADOError = true;
    }
    if(bHaveADOError)
    errorStringStream<<"\n\t\t(以上错误信息由ADO ERROR报告)\n";
    }
    catch(_com_error &e)
    {
    errorStringStream<<"\n\t"<<e.ErrorMessage();
    } return errorStringStream.str();
    }