while( !m_pRecordSet->adoEOF )
{
ID=m_pRecordSet->GetCollect("IDX").intVal;
abc = m_pRecordSet->GetCollect( "abc" ).intVal;
def = m_pRecordSet->GetCollect( "def" ).bstrVal;
TRACE("%d %d ",ID,abc);
TRACE(def);
TRACE("\n"); //m_pRecordSet->PutCollect("Phone",(_variant_t)"13917500000");
m_pRecordSet->Update();
m_pRecordSet->MoveNext();
}上面这段程序,把注释的部分去掉就能运行正常,Phone是varchar型的字段,请问错误在哪里呢?

解决方案 »

  1.   

    m_pRecordSet->PutCollect("Phone",_variant_t("13917500000"));
    是不是应该这样,我看不出还会别的问题了!
      

  2.   

    楼上的正解,在编译器看来,"13917500000"是static变量,无法对其进行操作,于是就需要你在这个地方使用variant_t的构造函数解决了
      

  3.   

    m_pRecordSet->PutCollect("Phone",_variant_t("13917500000"));
    改成这样还是报错
    Unknown Error: 0x800a0cc1错误
    555
    这个记录集的智能指针我用来读数据都没问题的
    就是在更新数据的时候出错
    奇怪了!
      

  4.   

    连接对象和记录集对象指针
    hr = m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=test;UID=test;PWD=test","","",adModeUnknown);m_pRecordSet->Open(_variant_t(str_query),
    _variant_t((IDispatch*)m_pConnection, true), adOpenStatic,adLockOptimistic,adCmdText);
    大家快帮忙啊!!