困扰了我几天的一个ADO问题,请高手帮忙!一定给分!

jevinss 2008-05-07 03:41:39

try{

_RecordsetPtr m_pRs;
m_pRs = NULL;

m_pRs.CreateInstance(__uuidof(Recordset));
m_pRs->CursorLocation = adUseClient;
m_pRs->Open((LPCTSTR)m_strCmdText, (LPCTSTR)m_strConnection, adOpenStatic,adLockReadOnly, adCmdTableDirect);


m_pRs->AddNew();
m_pRs->PutCollect("id", _variant_t("id"));
m_pRs->PutCollect("username", _variant_t("pstrname"));
m_pRs->Update();

*pCtxt << _T("<p>已执行插入");
}

catch (_com_error e)
{
_bstr_t m_bstrLastError;

m_bstrLastError = e.Description;

*pCtxt << _T("<p>err:")<<m_bstrLastError;

}


一直出现异常,err:-1
搞不懂了,
m_pRs->AddNew();
m_pRs->PutCollect("id", _variant_t("id"));
m_pRs->PutCollect("username", _variant_t("pstrname"));
m_pRs->Update();
这几句删除之后能运行,我想插入id和username,究竟该咋操作啊?id是字符,不是整形哈!
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CathySun118 2008-05-07
  • 打赏
  • 举报
回复
adOpenStatic静态游标,不能修改记录
jevinss 2008-05-07
  • 打赏
  • 举报
回复
adLockReadOnly:只读,无法更改数据
adLockPessimistic:保守式记录锁定,编辑时锁定数据源记录
adLockOptimistic:开放式记录锁定,只在调用Update时锁定记录
adLockBatchOptimistic:开放式批更新,只在调用UpdateBatch方法时锁定记录



我把adLockReadOnly换成adLockOptimistic问题就解决了,多谢楼上三位,马上给分!!!
jameshooo 2008-05-07
  • 打赏
  • 举报
回复
1楼50,2楼30,3楼20,可以了,哈哈
jevinss 2008-05-07
  • 打赏
  • 举报
回复
问题解决,楼上三位咋个给分?
jameshooo 2008-05-07
  • 打赏
  • 举报
回复
同意1楼,打开是按照只读权限打开的,后续的AddNew、PutCollect、Update都是写操作,肯定失败
菜牛 2008-05-07
  • 打赏
  • 举报
回复
adLockReadOnly!
draculacsdn 2008-05-07
  • 打赏
  • 举报
回复
adLockReadOnly是什么意思?是不是采用了只读方式打开的?
如果不是应该判断 open的返回值 是否正常?
应该首先判断open的返回值,然后调用getrecordcount,判断是否小于0,然后再进行插入

15,466

社区成员

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

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