你是不是用Wizard生成的OLE  DB
如果不是你瞧下头文件 包含
afxdb.h了吗

解决方案 »

  1.   

    忘了说一句
    你报错是不是“Record  set  failed  to  open”是的话给你篇帖子也许有用 
    http://www.csdn.net/expert/topic/426/426201.xml?temp=.0220148
      

  2.   

    我是用Wizard生成的OLE DB
    而且程序在Compile和build时都没有Error
    出现
      

  3.   

    to coloco你提供的贴子正好与我的错误相同等我试试看
    谢谢你
      

  4.   

    这是我以前写的一段代码,你看看有没有用吧:bool COleConnection::Open(const char *lpszServer,const char *lpszDatabase,const char *lpszUser,const char *lpszPwd)
    {
    HRESULT hr=S_OK;
    IUnknown *pUnkDataSource=0;
    IDataInitialize *pDataInitialize=0;
    IDBInitialize *pDBInitialize=0;
    IDBProperties *pDBProperties=0;
    IDBCreateSession *pDBSession=0;
    WCHAR wszDataSource[200];
    WCHAR wsztmp[100],wsztmp1[100];
    memset(wszDataSource,0,sizeof(wszDataSource));
    memset(wsztmp,0,sizeof(wsztmp));
    memset(wsztmp1,0,sizeof(wsztmp1));
    int i=0;
    if(lpszServer==NULL || strlen(lpszServer)==0)
    {
    strcpy(m_oleErrmsg,"未指定数据源.");
    return false;
    }
    wcscat(wszDataSource,L"Provider=SQLOLEDB;"); mbstowcs(wsztmp,lpszServer,sizeof(wsztmp));
    swprintf(wsztmp1,L"Data Source=%s;",wsztmp);
    wcscat(wszDataSource,wsztmp1); mbstowcs(wsztmp,lpszUser,sizeof(wsztmp));
    swprintf(wsztmp1,L"User ID=%s;",wsztmp);
    wcscat(wszDataSource,wsztmp1);

    mbstowcs(wsztmp,lpszPwd,sizeof(wsztmp));
    swprintf(wsztmp1,L"Password=%s;",wsztmp);
    wcscat(wszDataSource,wsztmp1);

    hr=CoCreateInstance(CLSID_MSDAINITIALIZE,0,CLSCTX_INPROC_SERVER,IID_IDataInitialize,(PPVOID)&pDataInitialize);
    if(pDataInitialize==0)
    {
    sprintf(m_oleErrmsg,"获取IDataInitialize接口失败.\n%s",m_wblErrmsg.GetLastErrmsg());
    goto SAFE_EXIT;
    }
    hr=pDataInitialize->GetDataSource(0,CLSCTX_INPROC_SERVER,wszDataSource,IID_IUnknown,&pUnkDataSource);
    if(pUnkDataSource==0)
    {
    sprintf(m_oleErrmsg,"获取新的数据源接口失败.\n%s",m_wblErrmsg.GetLastErrmsg());
    goto SAFE_EXIT;
    }
    pDataInitialize->Release();
    pDataInitialize=0;

    hr=pUnkDataSource->QueryInterface(IID_IDBInitialize,(PPVOID)&pDBInitialize);
    if(FAILED(hr))
    {
    sprintf(m_oleErrmsg,"获取IDBInitialize接口失败.\n%s",m_wblErrmsg.GetLastErrmsg());
    goto SAFE_EXIT;
    }
    hr=pDBInitialize->Initialize();
    if(FAILED(hr))
    {
    sprintf(m_oleErrmsg,"连接数据库服务器[ \\\\ %s ]失败.\n%s",lpszServer,m_wblErrmsg.GetLastErrmsg());
    goto SAFE_EXIT;
    }
    hr=pDBInitialize->QueryInterface(IID_IDBCreateSession,(PPVOID)&pDBSession);
    if(FAILED(hr))
    {
    sprintf(m_oleErrmsg,"初始化数据库会话接口失败.\n%s",m_wblErrmsg.GetLastErrmsg());
    goto SAFE_EXIT;
    }
    hr=pDBSession->CreateSession(0,IID_IDBCreateCommand,(IUnknown **)&m_pDBCommand);
    if(FAILED(hr))
    {
    sprintf(m_oleErrmsg,"获取IDBCreateCommand接口失败.\n%s",m_wblErrmsg.GetLastErrmsg());
    goto SAFE_EXIT;
    }
    SAFE_EXIT:
    if(pUnkDataSource!=0)
    {
    pUnkDataSource->Release();
    pUnkDataSource=0;
    }
    if(pDBSession!=0)
    {
    pDBSession->Release();
    pDBSession=0;
    }
    if(pDBProperties!=0)
    {
    pDBProperties->Release();
    pDBProperties=0;
    }
    if(pDBInitialize!=0)
    {
    pDBInitialize->Release();
    pDBInitialize=0;
    }
    return SUCCEEDED(hr);
    }