m_pRecordset->AddNew();//添加新记录
m_pRecordset->PutCollect(field, fieldvalue);
m_pRecordset->Update();//保存到库中

解决方案 »

  1.   

    rs->AddNew();
    rs->Fields->GetItem(field)->PutValue(val); or
    rs->Fields->GetItem(field)->Value = val;
    rs->Update();
      

  2.   

    _bstr_t bstrSQL; bstrSQL  = _bstr_t(L"Select *"
              L"from dept3"); _RecordsetPtr pRS (__uuidof(Recordset)); BeginWaitCursor(); try {
    pRS->Open(bstrSQL, (IDispatch *) pConn, adOpenStatic, adLockOptimistic, adCmdText);
    }
    catch (_com_error &e) {
    EndWaitCursor();
    AfxMessageBox ("WRONG",NULL,NULL);
    return;
    }pRS->AddNew();
    pRS->Fields->GetItem("dname")->PutValue("ni");//pRS->Fields->GetItem(field)->Value = val;
    pRS->Update();
      
      pRS->Close();
    pRS.Release();
    EndWaitCursor();可老是错??
      

  3.   

    _RecordsetPtr 系智能指针,所以不需Release引用。
      

  4.   

    bstrSQL  = _bstr_t(L"Select *"
     L"from dept3");试试: _bstr_t(L"Select * from dept3");
      

  5.   

    _RecordsetPtr pRS (__uuidof(Recordset));不能这样_RecordsetPtr pRS;
    pRS->CreateInstance(__uuidof(Recordset));
      

  6.   

    you should tell me where the error occured!
    and notice that data type should match
      

  7.   

    哦!不好意思,智能指针在实例化时不能用"->",
    只能用".",实例化完成后,对其成员的操作均用"->"
    改为:pRS.CreateInstance(__uuidos(Recordset)),
    一般在ADO编程中,还要考虑对命名空间的控制
      

  8.   

    麻烦看看:
    http://www.csdn.net/expert/topic/709/709609.xml?temp=.819729
      

  9.   

    没错,就是pRS->CreateInstance(__uuidof(Recordset));错了
      

  10.   

    这段代码编译能够通过,但是运行时,ADDNEW通过,在PUTVALUE时跳出
    错误为某个指令调用的内存不能为READ
    Unhandled expection in (KERNEL.DLL):0xE06D7363:MICROSOFT C++ expection
    我的数据库是ORACLE,但应该和这无关
    取数据是正确的
      

  11.   

    PutValue时产生的运行错误大都与数据类型相关。
    ...->PutValue(_variant_t vt);
    请注意将参数沟造成_variant_t类型。
      

  12.   

    不好意思,这段代码是正确的,是其他地方的原因。
    不过当我从EDIT中得到文字,往数据库里存的时候,老是-1
    已经_variant_t (m_edit)了,不知字符还要怎样转换,
    不知那位老大给个例子,分数不成问题的。
      

  13.   

    如果确信为字符串的话 则使用
    variant.ChangeType(VT_BSTR);
    或者
    DataTypeEnum type = rs->Fields->GetItem(bstrField)->GetType();
    CString strDesc;
    VARTYPE vt = MapDataType(type, (LPTSTR)(LPCTSTR)strDesc);
    if (vt == VT_NULL)
    return FALSE; vtValue.ChangeType(VT_BSTR);
    if ( vtValue == _variant_t(""))
    {
    if (vt != VT_BSTR)
    vtValue.ChangeType(VT_NULL);
    }
    else
    {
    try{
    vtValue.ChangeType(vt);
    }
    catch(...)
    {
    return FALSE;
    }
    }
    rs->Fields->GetItem(bstrField)->Value = vtValue;
             rs->Update();