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

火鸟33 系统架构师  2004-04-21 02:28:05
ADO中,用PutCollect()方法更新数据,怎么老是报错?
...全文
631 点赞 收藏 8
写回复
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王俊的文章
回复 点赞
发动态
发帖子
数据库
创建于2007-09-28

3444

社区成员

3.9w+

社区内容

VC/MFC 数据库
社区公告
暂无公告