MFC ADO写access数据库,代码出错

yhgfriend 2014-02-27 11:18:49
MFC ADO写access数据库,代码出错
向数据库里连续写10条记录,第一条能成功写入,但第二条记录执行TempRecordset->Update();时出错,麻烦大家帮忙找找问题出在哪?
void Sensors::SensorsFileToDatabase(void)
{
_RecordsetPtr TempRecordset;
TempRecordset.CreateInstance(__uuidof(Recordset));
TempRecordset->CursorLocation=adUseClient;
_variant_t abcd="SELECT * FROM sensors";
try
{
TempRecordset->Open(abcd, // 查询position表中所有字段
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
for(int i=0;i<TotalSensors;i++)
{
if(!TempRecordset->adoEOF) TempRecordset->MoveLast();
TempRecordset->AddNew();
TempRecordset->PutCollect("ID",sonsors[i].SensorID);
TempRecordset->PutCollect("type",sonsors[i].SensorType);
TempRecordset->PutCollect("prop",sonsors[i].SensorProp);
TempRecordset->PutCollect("unit",sonsors[i].SenSorUnit);
TempRecordset->PutCollect("VoiceFileName",sonsors[i].SensorVoiceFileName);
TempRecordset->PutCollect("DisplayNameStr",sonsors[i].SensorDisNameStr);
TempRecordset->PutCollect("CheckTime",sonsors[i].SensorCheckTime);
TempRecordset->PutCollect("AlarmEnable",sonsors[i].SensorAlarmEnable);
TempRecordset->PutCollect("OverResult",sonsors[i].SensorOverValue);
TempRecordset->PutCollect("LowerResult",sonsors[i].SensorLowerValue);
TempRecordset->PutCollect("OverAction",sonsors[i].SensorOverAction);
TempRecordset->PutCollect("LowerAction",sonsors[i].SensorLowerAction);
TempRecordset->PutCollect("hBJVoiceID",sonsors[i].hBJVoiceID);
TempRecordset->PutCollect("lBJVoiceID",sonsors[i].lBJVoiceID);
TempRecordset->PutCollect("SensorTemp",sonsors[i].SensorTemp);
TempRecordset->Update(); //第一条记录能成功更新到数据库,但第二条记录执行到这时出错。
}
TempRecordset->Close();
}
...全文
210 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhgfriend 2014-03-02
  • 打赏
  • 举报
回复
问题找到了,与代码无关,是数据表设计的问题,误把其中的一个字段设为主键,导致主键有相同的值而出现错误。
yhgfriend 2014-02-27
  • 打赏
  • 举报
回复
加与不加 try catch都一样,都是执行到UPDATE时弹出这个提示框,然后点继续后程序还能继续运行,catch里的AfxMessageBox(e->ErrorMessage());未被执行
是不是addnew后要执行一些特殊的操作呀,比如更新数据库,重新执行查询语句等呀?
见习学术士 2014-02-27
  • 打赏
  • 举报
回复
catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); } 捕获UPDATE 的异常,看看是什么原因~
LiuYinChina 2014-02-27
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/robertbaker/4726297
yifuzhiming 2014-02-27
  • 打赏
  • 举报
回复
单步调试看哪个指针出错了

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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