各位高手:我的数据库已经连接正确了但是始终提示在这一句m_pRs->Open((LPCTSTR)m_strCTt,(LPCTSTR)m_strCnt,
adOpenDynamic,adLockOptimistic,adCmdUnknown);
上出现问题,欢乐很多种方式都不行!请问如何解决?
另外,m_pRs->Open();这个函数在输入m_pRs->时无法发现open这个函数,是什么原因?
m_strCnt=_T("Driver={SQL Server};server=YL;database=sdjf");
m_strCTt=_T("Select * from yonghu");

m_pRs=NULL;
m_piAdoRecordBinding=NULL; ::CoInitialize(NULL); try
{
        m_pRs.CreateInstance(__uuidof(Recordset)); m_pRs->Open((LPCTSTR)m_strCTt,(LPCTSTR)m_strCnt,
adOpenDynamic,adLockOptimistic,adCmdUnknown);        if (FAILED(m_pRs->QueryInterface(__uuidof(IADORecordBinding),
(LPVOID*)&m_piAdoRecordBinding)))
_com_issue_error(E_NOINTERFACE);        m_piAdoRecordBinding->BindToRecordset(&m_rsRecSet); }

解决方案 »

  1.   

    rcorderser->open的函数的原型为:Open(VARIANT Source, VARIANT ActiveConnection, CursorTypeEnum CursorType,LockTypeEnum LockType, LONG Options).所以,你的第2个参数出错了.改成_variant_t((IDispatch*)m_strCnt,ture)
      

  2.   

    另外,出错的地方的参数应该是一个可用的ADO连接,而不是一个连接字符串.在一个ADO连接对象_ConnectionPtrc 的open 方法中的参数才是一个连接字符串.由这个方法建立的连接,才由set的open方法用为参数.所以传入recorderopen->中的第2个参数,已经是一个被建立的连接.
      

  3.   

    我改成_variant_t((IDispatch*)m_strCnt,true),但还是提示有错误,
    一个是警告: adCreateStructDoc = -2147483648,
    warning C4146: unary minus operator applied to unsigned type, result still unsigned
    还有一个错误
    error C2440: 'type cast' : cannot convert from 'class CString' to 'struct IDispatch *'
    请问这两个是什么原因造成的?特别是那个警告!每次调试都出现!