ADO操作 ACCESS数据库,报BOF或EOF中有一个是真,是怎么回事啊??? 如题,重新编译也没有用,该怎么处理啊,望高手指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 zyq5945 于 2010-07-14 00:06:19 编辑 就是说打开的记录集没有记录的话你直接MoveFirst是错误的,要先判断是否有记录了才能MoveFirst try { if(!m_pRecordset->BOF) m_pRecordset->MoveFirst(); else { AfxMessageBox("表内数据为空"); return; } while(!m_pRecordset->adoEOF) { // 遍历记录 m_pRecordset->MoveNext(); } } catch(_com_error& e) { //容错处理 } 这有一个ADO操作ACCESS的例子http://blog.csdn.net/xianglitian/archive/2010/05/22/5617173.aspx 可能:1,打开的结果集为空,一般是sql语句有问题或者没有符合条件的记录,此时可以查看RecordCount()值,如果是这种情况,RecordCount()值为0;2,结果集有记录,但你的循环语句没有结束条件,MoveLast()的值为true;3,结果集被删除为空,MoveFirst()的值为true;不管是那种情况,都是代码考虑不周导致的,仔细检查一下recordset相关的代码,尽量保证逻辑的严密性并测试记录集的边界; 只定义了一个记录集和连接指针,想要打开STATIONINFO和BATTERYINFO两张表,如果交替使用这些 记录集和连接变量来打开这两个表则可能会导致读取记录时指针紊乱,p_Recordset->MoveNext()将指针移到了有效记录集后面即(adEOF处)返回TRUE,包如上的出错信息。解决办法是为每张表定义记录集和连接指针。譬如要打开2张表就定义2个记录集和2个连接指针。 监控软件流程一般如何实现 请教windows服务无法截取图像的问题? 求...支持RS232和以太网通迅的网络编程思路!急... win32api下如何得到treeview某个NODE的句柄及如何在根NODE前显示+号 关于不同类之间变量的调用问题? 请教Bresenham画直线的相关问题(急等!!) 子线程的内存泄漏问题? 回调函数在那里写? GDI+最初怎么刷新呢? 为什么DWORD可以强制转换为LPVOID,LPVOID可以强制转换为DWORD类型.请高手指点 请教windows form使用multi-thread的问题 vc9.0 如何用代码导出ArcGIS9.3 中的图片(比如png,gif)求demo
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
return;
}
while(!m_pRecordset->adoEOF)
{
// 遍历记录
m_pRecordset->MoveNext();
}
}
catch(_com_error& e)
{
//容错处理
}
http://blog.csdn.net/xianglitian/archive/2010/05/22/5617173.aspx
1,打开的结果集为空,一般是sql语句有问题或者没有符合条件的记录,此时可以查看RecordCount()值,如果是这种情况,RecordCount()值为0;
2,结果集有记录,但你的循环语句没有结束条件,MoveLast()的值为true;
3,结果集被删除为空,MoveFirst()的值为true;不管是那种情况,都是代码考虑不周导致的,仔细检查一下recordset相关的代码,尽量保证逻辑的严密性并测试记录集的边界;
记录时指针紊乱,p_Recordset->MoveNext()将指针移到了有效记录集后面即(adEOF处)返回TRUE,包如上的出错信息。解决办法是为每张表定义记录集和连接指针。譬如要打开2张表就定义2个记录集和2个连接指针。