vc6连接access2007的问题

johnelf 2010-04-19 09:43:42
我是看孙鑫老师的视频学的,首先在C:\Program Files\Common Files\System\ado下导入一个msador15.dll文件,然后编译成功,接着我在一个窗口类里的一个ButtonDown响应函数里写操作数据库的代码,首先初始化com:CoInitialize( NULL );
之后再定义_ConnectionPtr pConn(__uuidof(Connection));这个智能指针的时候系统就提示说未定义,找不到,为什么呢?
是必须要把.tlh和.tli这两个文件加入工程吗?
我用的是vc++6.0,由于小项目所以用access2007,不知道行不行。望前辈指教。谢谢
...全文
466 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
damao31 2011-06-25
  • 打赏
  • 举报
回复
我也在找VC连接ACCESS2007的资料。。。。。。。
qzwxecrvfdsa 2011-05-26
  • 打赏
  • 举报
回复
楼主好 我最近也在用VC连接access2007
想请教一下有什么需要注意的地方 需不需要进行一些设置之类的啊?
还有就是关于导入ado的细节 要注意什么啊?
jxufeng 2010-04-21
  • 打赏
  • 举报
回复
名字空间,其实就是在你的程序外面加一个东西,不和别的冲突
要想搞清namespace,我倒觉得c#里面说得比较清楚,呵呵
johnelf 2010-04-20
  • 打赏
  • 举报
回复
貌似是命名空间的问题,还是不很懂。。
johnelf 2010-04-20
  • 打赏
  • 举报
回复
谢谢楼上各位前辈帮忙!最后还是在改成

#pragma warning(disable:4146)
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")

#pragma warning(default:4146)
using namespace ADODB;

再定义

_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pCmd(__uuidof(Command));

才编译链接过。。以前只是在路径后加个no_namespace,rename("EOF","adoEOF")
却编译不过,不知道为什么???
尹成 2010-04-20
  • 打赏
  • 举报
回复
完全可以用access2007,只要路径对了就可以,关于在VC6.0中使用请注意

import 了C:\Program Files\Common Files\System\ado\msador15.dll
有问题的,需要加上 using namespace ADODB,还要rename("EOF","ADOEOF")

以后你使用com,用import 加入后,系统会自动加入一个namespace,比如你查找_ConnectionPtr
就能在msador15.tli和msador15.tlh这两个文件里发现,而这两个文件中的一个(我忘了是哪一个,不应该的),最上面有namespace ,应该是ADODB(如果不是,你就将下面的程序改成那样的)
使用时
ADODB::_ConnectionPtr pConn(__uuidof(ADODB::Connection));
jxufeng 2010-04-19
  • 打赏
  • 举报
回复
import 了C:\Program Files\Common Files\System\ado\msador15.dll
有问题的,需要加上 using namespace ADODB,还要rename("EOF","ADOEOF")

以后你使用com,用import 加入后,系统会自动加入一个namespace,比如你查找_ConnectionPtr
就能在msador15.tli和msador15.tlh这两个文件里发现,而这两个文件中的一个(我忘了是哪一个,不应该的),最上面有namespace ,应该是ADODB(如果不是,你就将下面的程序改成那样的)
使用时
ADODB::_ConnectionPtr pConn(__uuidof(ADODB::Connection));
为了不必要的重复输入,就用using namespace来搞定,包括使用stl也是这样,当然你也可以给自己的程序加这个玩意
vc和 c++的书很多,提到这个的却很少,真是受不了那些写书的
johnelf 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 oyljerry 的回复:]
引用 3 楼 johnelf 的回复:
我在StdAfx.h下import 了C:\Program Files\Common Files\System\ado\msador15.dll
然后在一个对话框中的按钮响应函数里定义_ConnectionPtr pConn(__uuidof(Connection));
编译有错误
error C2065: '_ConnectionPtr' : un……
[/Quote]
右键点击查看定义无反应,但把msador15.tli和msador15.tlh两个文件脱到vc里却可以看。。
我检查了import,没有发现问题,我只是在mfc中加入了一个对话框类,在该类里添加了一个按钮响应,想把它做成数据库的连接操作,函数里面只有3句话CoInitialize( NULL );//初始化com
_ConnectionPtr pConn(__uuidof(Connection));
CoUninitialize();
提示ConnectionPtr 未定义,找不到。。。我用VC6连的是access2007.
还有在工程目录下怎么有debug和release两个目录?干嘛的啊?
oyljerry 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 johnelf 的回复:]
我在StdAfx.h下import 了C:\Program Files\Common Files\System\ado\msador15.dll
然后在一个对话框中的按钮响应函数里定义_ConnectionPtr pConn(__uuidof(Connection));
编译有错误
error C2065: '_ConnectionPtr' : undeclared identifier
……
[/Quote]
看是否还有_ConnectionPtr 定义,是否新版本ado换了类名称等,直接编译器生成对应的包装类
jameshooo 2010-04-19
  • 打赏
  • 举报
回复
响应函数所在的CPP文件确定包含了 stdafx.h 文件?
johnelf 2010-04-19
  • 打赏
  • 举报
回复
我在StdAfx.h下import 了C:\Program Files\Common Files\System\ado\msador15.dll
然后在一个对话框中的按钮响应函数里定义_ConnectionPtr pConn(__uuidof(Connection));
编译有错误
error C2065: '_ConnectionPtr' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'pConn'
error C2065: 'pConn' : undeclared identifier
error C2065: 'Connection' : undeclared identifier

我是这么写的:CoInitialize( NULL );//初始化com
_ConnectionPtr pConn(__uuidof(Connection));


CoUninitialize();
liu_hz 2010-04-19
  • 打赏
  • 举报
回复
帮你顶下吧。
觉得你说得不太清楚~~~
johnelf 2010-04-19
  • 打赏
  • 举报
回复
up.........................

4,011

社区成员

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

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