m_pRecordset->MoveLast()执行出错,显示更新失败

weixin_40188149 2017-12-28 11:20:07
	CoInitialize(NULL);
try
{
HRESULT hr;
m_pConnection.CreateInstance("ADODB.Connection");
hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Mydata.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format(_T("连接数据库失败!\n错误信息:%s"),e.ErrorMessage());
AfxMessageBox(errormessage);
}
try //将数据写入数据库的数据表中。
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("SELECT * FROM 测量过程",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
// 写入各字段值
m_pRecordset->MoveLast();
_variant_t theValue;
theValue=m_pRecordset->GetCollect("气温"); //获取气温
m_temper=(char*)_bstr_t(theValue);
theValue=m_pRecordset->GetCollect("气压"); //获取气压
m_pressure=(char*)_bstr_t(theValue);
theValue=m_pRecordset->GetCollect("湿度"); //获取湿度
m_humidity=(char*)_bstr_t(theValue);
theValue=m_pRecordset->GetCollect("备注"); //获取备注
}
catch (_com_error e) // 显示错误信息
{
CString errormessage;
errormessage.Format(_T("更新记录失败!\r\n错误信息:%s", e.ErrorMessage()));
AfxMessageBox(errormessage);
}


执行到m_pRecordset->MoveLast(); 时出现错误,显示更新数据失败,错误信息是乱码。
想请教该如何解决这个问题,这段代码目的就是想读取数据库表中最后一行数据,并赋给几个编辑框显示。
...全文
432 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40188149 2017-12-29
  • 打赏
  • 举报
回复
引用 6 楼 weixin_40188149 的回复:
[quote=引用 5 楼 zgl7903 的回复:] 0x800A0BCD 好像是说 BOF 或 EOF 中有一个是“真 MoveLast() 之前判断下 EOF 或者这一句单独 try catch
是指可能指针本身就在最后一行,导致MoveLast冲突了吗? [/quote] 问题已经解决了,谢谢帮助
weixin_40188149 2017-12-29
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
0x800A0BCD 好像是说 BOF 或 EOF 中有一个是“真 MoveLast() 之前判断下 EOF 或者这一句单独 try catch
错误显示的是 BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录 但我数据库的表中已存有一行数据
weixin_40188149 2017-12-29
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
0x800A0BCD 好像是说 BOF 或 EOF 中有一个是“真 MoveLast() 之前判断下 EOF 或者这一句单独 try catch
是指可能指针本身就在最后一行,导致MoveLast冲突了吗?
zgl7903 2017-12-29
  • 打赏
  • 举报
回复
0x800A0BCD 好像是说 BOF 或 EOF 中有一个是“真 MoveLast() 之前判断下 EOF 或者这一句单独 try catch
赵4老师 2017-12-28
  • 打赏
  • 举报
回复
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
weixin_40188149 2017-12-28
  • 打赏
  • 举报
回复
引用 3 楼 zgl7903 的回复:
试试 catch (_com_error &e)
显示 Unkonwn error 0x800A0BCD
zgl7903 2017-12-28
  • 打赏
  • 举报
回复
试试 catch (_com_error &e)
weixin_40188149 2017-12-28
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A


错误显示这样,所以不知道问题出在哪里,请问该怎么解决?

4,011

社区成员

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

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