Recordset的AddNew()问题---急急急!!!!!

xiaoxiao0939 2006-10-31 09:17:34
_Recordset m_pRecordSet;
m_pRecordSet = pCt->Execute((_bstr_t)("select * from picture"),NULL,adCmdText);

m_pRecordSet->MoveNext();
m_pRecordSet->AddNew();
m_pRecordSet->GetFields()->GetItem("pic")->AppendChunk(varBLOB);
m_pRecordSet->Update();
我是用ADO向oracle中插入一个图像数据,在数据库中字段类型为BLOB。
为什么在AddNew的时候就跳到catch中了!不能添加新的一行记录呢??
...全文
215 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
尘雨 2006-10-31
  • 打赏
  • 举报
回复
实践出真知,oracle不太熟悉,现在也了解了
尘雨 2006-10-31
  • 打赏
  • 举报
回复
因为被内部分为两步操作,第一步是先试图插入一个默认值为空(假设相关字段都没有默认值的情况下)数据行,第二步才是更新相关行的字段
如果不允许为空,第一步就没办法完成。
xiaoxiao0939 2006-10-31
  • 打赏
  • 举报
回复
经验证了一下,BLOB类型的字段允许为空的话,就好使了!这是为什么啊?前一个jh字段是否允许为空不影响!主要是存放图像的那个字段
xiaoxiao0939 2006-10-31
  • 打赏
  • 举报
回复
我的表没有主健,只有两个字段,都不允许为空,那么我在插入数据的时候这样插入
m_pRecordset->PutCollect("jh",_variant_t(m_UserName));
m_pRecordset->GetFields()->GetItem("pic")->AppendChunk(varBLOB);
m_pRecordset->Update();
插入失败了!但是如果我把两个字段都允许为空的话,单独插入还是一起插入就可以执行,并成功!这是为什么啊!!!
尘雨 2006-10-31
  • 打赏
  • 举报
回复
是否表里面定义了主键或者不允许为空或者唯一索引
xiaoxiao0939 2006-10-31
  • 打赏
  • 举报
回复
错了,AddNew现在是可以执行,但是返回值是0!!!
xiaoxiao0939 2006-10-31
  • 打赏
  • 举报
回复
AddNew可以了,现在插入数据又出错了!catch的错误是“插入数据失败”!这个是为什么啊?
尘雨 2006-10-31
  • 打赏
  • 举报
回复
使用动态游标或者静态游标,锁定类型如下
m_pRecordSet.CreateInstance(__uuidof(Recordset));

m_pRecordSet->Open((_bstr_t)("select * from picture"),(_variant_t)(IDispatch *)pCt,adOpenDynamic,adLockOptimistic,adCmdText);
m_pRecordSet->MoveNext();
m_pRecordSet->AddNew();

4,011

社区成员

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

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