_variant_t proname
m_pRecordset =m_pConnection->Execute("select * from infot",&RecordsAffected,adCmdText);
proname=m_pRecordset->GetCollect("productname");
m_pRecordset->AddNew ();
m_pRecordset->PutCollect("numberthree",proname);
m_pRecordset->update();
为什么执行m_pRecordset->PutCollect("numberthree",proname);只要proname是类型_variant_t就不行,那我如何把proname=m_pRecordset->GetCollect("productname")的到的数据用m_pRecordset->PutCollect("numberthree",proname)插入到数据库中?proname应该转成什么类型?谢谢

解决方案 »

  1.   

    /***********************【5】记录集的遍历、更新*************************/根据我们刚才通过执行SQL命令建立好的 学生信息 表,它包含四个字段:学号,姓名,年龄,生日
    以下的代码实现:打开记录集,遍历所有记录,删除第一条记录,添加三条记录,移动光标到第二条
    记录,更改其年龄,保存到数据库。 try
     {
      _variant_t vUsername,vBirthday,vID,vOld;
      _RecordsetPtr m_pRecordset;
      
      m_pRecordset.CreateInstance("ADODB.Recordset");
      m_pRecordset->Open("SELECT * FROM 学生信息",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
      
      while(!m_pRecordset->adoEOF) 
      {
       vID = m_pRecordset->GetCollect(_variant_t((long)0));    //取得第1列的值,从0开始计数,你也可以直接给出列的名称,如下一行
       vUsername = m_pRecordset->GetCollect("姓名");  //取得姓名字段的值
       vOld = m_pRecordset->GetCollect("年龄");
       vBirthday = m_pRecordset->GetCollect("生日");
       
       TRACE("id:%d,姓名:%s,年龄:%d,生日:%s\r\n",
        vID.lVal,
        (LPCTSTR)(_bstr_t)vUsername,
        vOld.lVal,
        (LPCTSTR)(_bstr_t)vBirthday);  //在DEBUG方式下的OUTPUT窗口输出记录集中的记录
     
       m_pRecordset->MoveNext();    //移到下一条记录
      }
      
      m_pRecordset->MoveFirst();    //移到首条记录
      m_pRecordset->Delete(adAffectCurrent);    //删除当前记录
      
      
      for(int i=0;i<3;i++)    //添加三条新记录并赋值
      {
       m_pRecordset->AddNew();    //添加新记录
       m_pRecordset->PutCollect("学号",_variant_t((long)(i+10)));
       m_pRecordset->PutCollect("姓名",_variant_t("王斌年"));
       m_pRecordset->PutCollect("年龄",_variant_t((long)21));
       m_pRecordset->PutCollect("生日",_variant_t("1930-3-15"));
      }
      
      m_pRecordset->Move(1,_variant_t((long)adBookFirst));    //从第一条记录往下移动一条记录,即移动到第二条记录处
      m_pRecordset->PutCollect(_variant_t("年龄"),_variant_t((long)45));    //修改其年龄
      m_pRecordset->Update();    //保存到库中
      
     } catch (_com_error e){} 
      

  2.   

    但这并没有把用m_pRecordset->GetCollect()得到的数据用m_pRecordset->()方法插入到数据库呀
      

  3.   

    m_pRecordset->GetCollect()得到的数据用m_pRecordset->PutCollect()添加到数据库