try{
_ConnectionPtr conn;
_RecordsetPtr rs;
conn.CreateInstance("ADODB.Connection");
rs.CreateInstance("ADODB.Recordset");
conn->Open("Driver={SQL Server};UID=sa;PWD=;server=127.0.0.1;database=TEMP","","",adModeUnknown);
_variant_t sql("select b_pub_date from bulletin where bulletin_sid=1683");
rs->Open(sql,_variant_t((IDispatch *)conn,true),adOpenKeyset,adLockOptimistic,adCmdText);
rs->MoveFirst();
_variant_t data("2003-12-29 11:11:11");
rs->GetFields()->GetItem("B_PUB_DATE")->Value=data;
rs->Update();
rs->Close();
rs.Release();
conn->Close();
conn.Release();
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}

解决方案 »

  1.   

    帮帮忙吧!很急,我调了一天了,还是不明白为什么表里所有的记录都会被update成那个给定的值了
      

  2.   

    rs->Move(0,_variant_t((long)adBookFirst));
    rs->PutCollect(_variant_t("B_PUB_DATE"),_variant_t(data));
    rs->Update();///保存到库中
      

  3.   

    谢谢spwnihao(面鱼) ,可是这样也不行,还是所有记录都给更新了
      

  4.   

    ,这一段代码是我新开的一个dialog工程测试的,在一个OnBnClickedOk()消息处理函数里,在向导生成的应用程序的代码里只加了一个 AfxOleInit();和
    #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")我都要哭了,不知道为什么。
    数据库的表中B_PUB_DATE是个datetime字段
      

  5.   

    忘记说了,我的环境是vc.net 2003+win xp pro+sql server 2k dev
      

  6.   

    rs->Open(sql,_variant_t((IDispatch *)conn,true),adOpenKeyset,adLockOptimistic,adCmdText);
    rs->Open(sql,_variant_t((IDispatch *)conn,true),adOpenDynamic ,adLockOptimistic,adCmdText);
    试试
      

  7.   

    spwnihao(面鱼) ,哈,可以了,原来不能用键集啊,谢谢!谢谢!我怎么就没试这个呢