ADO中使用AddNew增加记录的时候,如果主键重复出错,就增加不进去,这时调用Close()出错,怎么处理 ADO中使用AddNew增加记录的时候,如果主键重复出错,就增加不进去,这时调用Close()出错,怎么处理 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 VARIANT varImageBLOB[10];//近景数据块 bool bRet; COleSafeArray vaFieldlist; //用安全数组定义数据库字段列表 COleSafeArray vaValuelist; //用安全数组定义数据库字段内容列表 try { vaFieldlist.CreateOneDim(VT_VARIANT, nFieldNum+1); //创建一维的字段列表 long lArrayIndex[1]; //访问字段列表所需的长整形 lArrayIndex[0] = 0; vaFieldlist.PutElement(lArrayIndex,&(_variant_t(strField))); for(int i=0;i<nFieldNum;i++) { lArrayIndex[0] = i+1; vaFieldlist.PutElement(lArrayIndex,&(_variant_t(strImageField[i]))); } //加入所要插入的记录 vaValuelist.CreateOneDim(VT_VARIANT, nFieldNum+1); lArrayIndex[0] = 0; //选中字段0 CString strTemp=strSerialNum; vaValuelist.PutElement(lArrayIndex,&(_variant_t(strTemp.GetBuffer(strTemp.GetLength())))); //记录编号 for(i=0;i<nFieldNum;i++) { BlobToVariant(varImageBLOB[i],strBuf[i],nFileLen[i]); lArrayIndex[0] = i+1; vaValuelist.PutElement(lArrayIndex,&varImageBLOB[i]);//近景 } m_Recordset.GetActiveRecordsetPtr()->AddNew(vaFieldlist, vaValuelist); bRet=true; } catch(_com_error &e) { // Any failure in adding a new column cancel the update DumpError(e); bRet=false; } for(int i=0;i<nFieldNum;i++) { VariantClear(&varImageBLOB[i]); } vaValuelist.Clear(); vaFieldlist.Clear(); return bRet;在捕获异常中应该怎么处理啊 要CancelUpdate以后再Close给一个思路:在AddNew之前,不妨按照你要新加记录的关键字查询记录集 有人了解IC卡读写器嚒,求解 如何让MFC对话框中的Menu菜单变灰或恢复 MoveWindow()运行出错!! RadioButton获取焦点,背景显亮 关于CArray 的问题 还是修改注册表的问题 CSplitterWnd界面问题,请教! 我想把图片存进数据库!求教 请教一个弱弱的问题 我只往文件里写了2个字节,为什么该文件却要占用4,096个字节呢?请帮忙回答好吗? csdn论坛人们的素质又down了,回了好贴不给分,郁闷啊,斑竹想想办法啊否则人气就... OLE剪贴板与WINDOWS剪贴板有何区别?
bool bRet;
COleSafeArray vaFieldlist; //用安全数组定义数据库字段列表
COleSafeArray vaValuelist; //用安全数组定义数据库字段内容列表
try
{
vaFieldlist.CreateOneDim(VT_VARIANT, nFieldNum+1); //创建一维的字段列表
long lArrayIndex[1]; //访问字段列表所需的长整形 lArrayIndex[0] = 0;
vaFieldlist.PutElement(lArrayIndex,&(_variant_t(strField)));
for(int i=0;i<nFieldNum;i++)
{
lArrayIndex[0] = i+1;
vaFieldlist.PutElement(lArrayIndex,&(_variant_t(strImageField[i])));
}
//加入所要插入的记录
vaValuelist.CreateOneDim(VT_VARIANT, nFieldNum+1); lArrayIndex[0] = 0; //选中字段0
CString strTemp=strSerialNum;
vaValuelist.PutElement(lArrayIndex,&(_variant_t(strTemp.GetBuffer(strTemp.GetLength())))); //记录编号 for(i=0;i<nFieldNum;i++)
{
BlobToVariant(varImageBLOB[i],strBuf[i],nFileLen[i]);
lArrayIndex[0] = i+1;
vaValuelist.PutElement(lArrayIndex,&varImageBLOB[i]);//近景
}
m_Recordset.GetActiveRecordsetPtr()->AddNew(vaFieldlist, vaValuelist);
bRet=true;
}
catch(_com_error &e)
{
// Any failure in adding a new column cancel the update
DumpError(e);
bRet=false;
}
for(int i=0;i<nFieldNum;i++)
{
VariantClear(&varImageBLOB[i]);
}
vaValuelist.Clear();
vaFieldlist.Clear();
return bRet;
在捕获异常中应该怎么处理啊
在AddNew之前,不妨按照你要新加记录的关键字查询记录集