代码:
已经包含:#import "c:\program files\common files\system\ado\msado15.dll" rename("EOF","IsEOF")        /*********ADO********/
::CoInitialize(NULL); ADODB::_ConnectionPtr ConnPtr;
ConnPtr.CreateInstance("ADODB.Connection"); ADODB::_RecordsetPtr RsPtr;
RsPtr.CreateInstance("ADODB.Recordset"); ConnPtr->Open("Provider=SQLOLEDB.1;Password=sql;Persist Security Info=True;User ID=sa;Initial Catalog=TestDB;Data Source=127.0.0.1","","",-1);        /*
        //如果使用如下两行已注释代码执行SQL语句则编译正常通过,并且可正常执行
        _variant_t RecordsAffected;
        ConnPtr->Execute("insert into [Table]([Row]) values('Hello Kitty')",&RecordsAffected,-1);
        */ RsPtr->Open("select [Row] from [Table]",ConnPtr,adOpenForwardOnly, adLockReadOnly, adCmdUnknown); ConnPtr->Close();
::CoUninitialize();
编译后出现:
d:\Proj\textboxmethod.h(65) : error C2065: 'adOpenForwardOnly' : undeclared identifier
d:\Proj\textboxmethod.h(65) : error C2065: 'adLockReadOnly' : undeclared identifier
d:\Proj\textboxmethod.h(65) : error C2065: 'adCmdUnknown' : undeclared identifier
怎么回事啊?

解决方案 »

  1.   

    应该是
    RsPtr->Open("select [Row] from [Table]",ConnPtr.GetInterfacePtr (),adOpenForwardOnly, adLockReadOnly, adCmdUnknown);
      

  2.   

    #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")_ConnectionPtr ConnPtr;                  //////////////数据库连接指针
    ConnPtr.CreateInstance("ADODB.Connection");_RecordsetPtr  RsPtr;                   //////////////记录集指针
    RsPtr.CreateInstance("ADODB.Recordset");试一下
      

  3.   

    解决了,感谢楼上的朋友,您的代码使用后发生15项错误,其中发现
    必须使用
    ADODB::_ConnectionPtr ConnPtr;
    而不是_ConnectionPtr ConnPtr;然后我改回后修改如下语句,编译通过
    RsPtr->Open("select B from T where A='1'",ConnPtr.GetInterfacePtr(),ADODB::adOpenForwardOnly, ADODB::adLockReadOnly, ADODB::adCmdUnknown);感谢,结帖!