关于ADO数据库编程的问题,高手请进->急(困扰一天了)

visual875500 2004-01-14 03:26:17
定义
_RecordsetPtr m_pRs 出错
摘录:
1.TestDoc.h
/////////////////////////////////////////////////////////////////
private:

IADORecordBinding* m_piAdoRecordBinding;
CCustomRs m_rsRecSet;
CString m_strConnection;
CString m_strCmdText;
_RecordsetPtr m_pRs;

2.TestDoc.cpp
//////////////////////////////////////////////////////////////////
BOOL CTestDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;

m_strConnection=_T("Provider=MSDASQL.1;Data Source=mytest");
m_strCmdText=_T("select * from mytest");

////////////就是下面这个m_pRS////////////////
m_pRs=NULL;
m_piAdoRecordBinding=NULL;

// TODO: add reinitialization code here
// (SDI documents will reuse this document)

return TRUE;
}

3.Debug showing
////////////////////////////////////////////////////////////////
Compiling...
TestDoc.cpp
h:\my program\vc++\mfc\test\debug\msado15.tlh(409) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
h:\my program\vc++\mfc\test\testdoc.h(59) : error C2146: syntax error : missing ';' before identifier 'm_pRs'
h:\my program\vc++\mfc\test\testdoc.h(59) : error C2501: '_RecordsetPtr' : missing storage-class or type specifiers
h:\my program\vc++\mfc\test\testdoc.h(59) : error C2501: 'm_pRs' : missing storage-class or type specifiers
H:\My program\VC++\MFC\Test\TestDoc.cpp(51) : error C2065: 'm_pRs' : undeclared identifier
Generating Code...
Compiling...
Test.cpp
h:\my program\vc++\mfc\test\debug\msado15.tlh(409) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
h:\my program\vc++\mfc\test\testdoc.h(59) : error C2146: syntax error : missing ';' before identifier 'm_pRs'
h:\my program\vc++\mfc\test\testdoc.h(59) : error C2501: '_RecordsetPtr' : missing storage-class or type specifiers
h:\my program\vc++\mfc\test\testdoc.h(59) : error C2501: 'm_pRs' : missing storage-class or type specifiers
Generating Code...
Compiling...
TestView.cpp
h:\my program\vc++\mfc\test\debug\msado15.tlh(409) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
h:\my program\vc++\mfc\test\testdoc.h(59) : error C2146: syntax error : missing ';' before identifier 'm_pRs'
h:\my program\vc++\mfc\test\testdoc.h(59) : error C2501: '_RecordsetPtr' : missing storage-class or type specifiers
h:\my program\vc++\mfc\test\testdoc.h(59) : error C2501: 'm_pRs' : missing storage-class or type specifiers
Generating Code...
Error executing cl.exe.

Test.exe - 10 error(s), 3 warning(s)

请问如何进行改正,谢谢!
...全文
162 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
DebugXP 2004-01-14
  • 打赏
  • 举报
回复
AfxOleInit();
bluebohe 2004-01-14
  • 打赏
  • 举报
回复
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF","adoEOF")
AfxOleInit();
数据的世界 2004-01-14
  • 打赏
  • 举报
回复
还需要AfxOleInit();
数据的世界 2004-01-14
  • 打赏
  • 举报
回复
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")
using namespace ADODB; 如果没有该句需要
m_pConnection.CreateInstance(_uuidof(ADODB::Connection));
wjohenw 2004-01-14
  • 打赏
  • 举报
回复
1、使用预处理指令#import
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")
但要注意不能放在stdAfx.h文件的开头,而应该放在所有include指令的后面。否则在编译时会出错。
程序在编译过程中,VC++会读出msado15.dll中的类型库信息,自动产生两个该类型库的头文件和实现文件msado15.tlh和msado15.tli(在您的Debug或Release目录下)。在这两个文件里定义了ADO的所有对象和方法,以及一些枚举型的常量等。我们的程序只要直接调用这些方法就行了,与使用MFC中的COleDispatchDriver类调用Automation对象十分类似。
duyhui 2004-01-14
  • 打赏
  • 举报
回复
头文件没有加进来吧!!
#include "comdef.h"
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF","ISEOF")

然后初始化com组件
if(FAILED(::CoInitialize(NULL)))
return;
m_pConnection.CreateInstance(_uuidof(Connection));
m_pRecordset.CreateInstance(_uuidof(Recordset));
然后你在定义就行了

16,472

社区成员

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

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

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