ado连接数据库报错“adoEOF”: 不是“_Recordset”的成员

leowilliam 2013-08-05 10:56:49
大大们指导一下呗。自己用ACCESS做的一个表。机子上只有数据库的客户端。而且是公司的,所以还是不宜做练习的好。
代码:
return;
}
cout<<"连接成功!"<<endl;
_RecordsetPtr pRst(__uuidof(Recordset));
pRst=m_pConnection->Execute("select * from ADOtest",NULL,adCmdText);//使用Execute方法,student为表名
if(!pRst->adoEOF)
{
pRst->MoveFirst();
}
else
{
cout<<"表内数据为空"<<endl;
return;
}
// 读入库中各字段并加入列表框中
_variant_t var;
string strName;

: “adoEOF”: 不是“_Recordset”的成员
1> f:\documents and settings\administrator\my documents\visual studio 2010\projects\ado02\ado02\debug\msado15.tlh(2181) : 参见“_Recordset”的声明
1>f:\documents and settings\administrator\my documents\visual studio 2010\projects\ado02\ado02\readadovalue.cpp(92): error C2039: “adoEOF”: 不是“_Recordset”的成员
1> f:\documents and settings\administrator\my documents\visual studio 2010\projects\ado02\ado02\debug\msado15.tlh(2181) : 参见“_Recordset”的声明
1>f:\documents and settings\administrator\my documents\visual studio 2010\projects\ado02\ado02\readadovalue.cpp(92): fatal error C1903: 无法从以前的错误中恢复;正在停止编译
...全文
683 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
2277momo 2016-04-02
  • 打赏
  • 举报
回复
楼主,你最后是怎么解决这个问题的呀?我也重命名过了,但是还是没有RecordsetPtr下没有adoEOF。。。
nextseconds 2013-08-22
  • 打赏
  • 举报
回复
引用 4 楼 chendongk 的回复:
引用 3 楼 mgy4938 的回复:
通常文件结束字符是以EOF结尾的,而微软提供的ado,返回的记录集判断是否为空,也是根据EOF判断的,为了避免重复,所以通常在使用ado时,一般都重新变换一下,使用no_namespace rename("EOF","adoEOF")。将EOF重命名为adoEOF,而你的程序里面用了adoEOF但是,你没有声明定义no_namespace rename("EOF","adoEOF"),所以肯定是会报错的。你只需要在头文件导入ado时使用#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")声明一下就可以了
程序里面已经引用了。但是还是报错。。。。
http://download.csdn.net/detail/mgy4938/5843321 看看这个我自己写的代码类,在vs2008编译器下测试过,正常使用,没有问题
leowilliam 2013-08-22
  • 打赏
  • 举报
回复
引用 3 楼 mgy4938 的回复:
通常文件结束字符是以EOF结尾的,而微软提供的ado,返回的记录集判断是否为空,也是根据EOF判断的,为了避免重复,所以通常在使用ado时,一般都重新变换一下,使用no_namespace rename("EOF","adoEOF")。将EOF重命名为adoEOF,而你的程序里面用了adoEOF但是,你没有声明定义no_namespace rename("EOF","adoEOF"),所以肯定是会报错的。你只需要在头文件导入ado时使用#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")声明一下就可以了
程序里面已经引用了。但是还是报错。。。。
nextseconds 2013-08-09
  • 打赏
  • 举报
回复
通常文件结束字符是以EOF结尾的,而微软提供的ado,返回的记录集判断是否为空,也是根据EOF判断的,为了避免重复,所以通常在使用ado时,一般都重新变换一下,使用no_namespace rename("EOF","adoEOF")。将EOF重命名为adoEOF,而你的程序里面用了adoEOF但是,你没有声明定义no_namespace rename("EOF","adoEOF"),所以肯定是会报错的。你只需要在头文件导入ado时使用#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")声明一下就可以了
leowilliam 2013-08-08
  • 打赏
  • 举报
回复
不是,我把你的#include <afxdb.h>//扔进去了,还是不行。唉
lilianjie001 2013-08-05
  • 打赏
  • 举报
回复
楼主可是少了下面的代码
#include <afxdb.h>// AfxMessageBox命令需要
#import "C:\Program Files\Common Files\System\ado\msado15.dll"\
no_namespace rename("EOF","adoEOF")

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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