ADO中,用PutCollect()方法更新数据,怎么老是报错?

火鸟33 2004-04-21 02:28:05
ADO中,用PutCollect()方法更新数据,怎么老是报错?
...全文
826 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
火鸟33 2004-06-14
  • 打赏
  • 举报
回复
早解决廖,忘了结贴
Pipi0714 2004-04-30
  • 打赏
  • 举报
回复
贴出你的代码以及字段类型
wyh2002 2004-04-30
  • 打赏
  • 举报
回复
先检查数据类型
jnlon 2004-04-30
  • 打赏
  • 举报
回复
应该是类型搞错了。
zhaohuiguang 2004-04-30
  • 打赏
  • 举报
回复
把代码贴一下吧
PiggyXP 2004-04-30
  • 打赏
  • 举报
回复
楼主把代码贴出来看看吧
如果你确定不是数据类型或者长度之类不匹配的话
hahu 2004-04-21
  • 打赏
  • 举报
回复
看看VARIANT的数据类型对不对


ACuke 2004-04-21
  • 打赏
  • 举报
回复
记录集的遍历、更新

根据我们刚才通过执行SQL命令建立好的users表,它包含四个字段:ID,username,old,birthday
以下的代码实现:
打开记录集,遍历所有记录,删除第一条记录,添加三条记录,移动光标到第二条记录,更改其年龄,保存到数据库。

_variant_t vUsername,vBirthday,vID,vOld;

_RecordsetPtr m_pRecordset;

m_pRecordset.CreateInstance("ADODB.Recordset");

m_pRecordset->
Open("SELECT * FROM users",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

while(!m_pRecordset->adoEOF)
///这里为什么是adoEOF而不是EOF呢?还记得rename("EOF","adoEOF")这一句吗?

{ vID = m_pRecordset->GetCollect(_variant_t((long)0)
);///取得第1列的值,从0开始计数,你也可以直接给出列的名称,如下一行

vUsername = m_pRecordset->GetCollect("username");
///取得username字段的值

vOld = m_pRecordset->GetCollect("old");

vBirthday = m_pRecordset->GetCollect("birthday");
///在DEBUG方式下的OUTPUT窗口输出记录集中的记录

if(vID.vt != VT_NULL && vUsername.vt != VT_NULL && vOld.vt != VT_NULL && vBirthday.vt != VT_NULL)

TRACE("id:%d,姓名:%s,年龄:%d,生日:%s\r\n",vID.lVal,(LPCTSTR)(_bstr_t)vUsername,vOld.lVal,(LPCTSTR)(_bstr_t)vBirthday) ;

m_pRecordset->MoveNext();
///移到下一条记录 }

m_pRecordset->MoveFirst();
///移到首条记录 m_pRecordset->Delete(adAffectCurrent);
///删除当前记录 ///添加三条新记录并赋值

for(int i=0;i<3;i++)

{

m_pRecordset->AddNew();///添加新记录
m_pRecordset->PutCollect("ID",_variant_t((long)(i+10)));
m_pRecordset->PutCollect("username",_variant_t("叶利钦"));
m_pRecordset->PutCollect("old",_variant_t((long)71));
m_pRecordset->PutCollect("birthday",_variant_t("1930-3-15"));

}

m_pRecordset->Move(1,_variant_t((long)adBookmarkFirst));
///从第一条记录往下移动一条记录,即移动到第二条记录处

m_pRecordset->PutCollect(_variant_t("old"),_variant_t((long)45));
///修改其年龄

m_pRecordset->Update();
///保存到库中


具体详看Vckbase王俊的文章

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧