听说设为Dynamic的话,用户(包括其它用户)所作的修改会反映在记录集(_RecordsetPtr)中,可是我做了试验,结果却并非如此:_RecordsetPtr pRS;
...
pRS->Open("select * from mytable", adOpenDynamic);
var = pRS->GetCollect(_variant_t("姓名")); // 此时读出的值是“小王”
// 直接用SQL Server Enterprise Manager(相当于其它用户)修改本记录的姓名字段,改为“小张”。
pRS->MoveFirst(); // 移回游标
var = pRS->GetCollect(_variant_t("姓名")); // 竟然读出的值还是“小王”???
// 难道要Requery()不成?那不是失去了“动态”的意义?望高手不吝赐教!!!!!!!!!!!!
...
pRS->Open("select * from mytable", adOpenDynamic);
var = pRS->GetCollect(_variant_t("姓名")); // 此时读出的值是“小王”
// 直接用SQL Server Enterprise Manager(相当于其它用户)修改本记录的姓名字段,改为“小张”。
pRS->MoveFirst(); // 移回游标
var = pRS->GetCollect(_variant_t("姓名")); // 竟然读出的值还是“小王”???
// 难道要Requery()不成?那不是失去了“动态”的意义?望高手不吝赐教!!!!!!!!!!!!
pRS->MoveFirst();
去掉试试
你已经打开了记录集,所有的数据都保存了,moveFirst移动的是内存中的游标,没有改变数据库中的数据