我在myView.h文件的声明代码
public:
   _ConnectionPtr  m_connection;
   _RecordsetPtr   m_recordset;
   _CommandPtr     m_command;
private:
CString m_strSource;
BOOL m_fConnected;我在CmyView类的初始化函数如下
void CADODemoView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
HRESULT hr;
_bstr_t source("Driver={SQL Server};Server=TB;\
   Uid=sa;Pwd=sa;Database=ado");
_bstr_t user("sa");
_bstr_t pwd("sa");
try
{
hr=m_connection.CreateInstance(_uuidof(Connection));
if(SUCCEEDED(hr))
hr=m_connection->Open(source,user,pwd,16);
    if(SUCCEEDED(hr))
hr=m_recordset.CreateInstance(_uuidof(Recordset));
if(SUCCEEDED(hr))
m_fConnected=TRUE;
    else
        m_fConnected=FALSE;
}
catch(_com_error &e)
{
MessageBox(e.ErrorMessage());
 m_fConnected=FALSE;
}
if(! m_fConnected)MessageBox("ADO 数据源初始化失败");
else m_strSource=(const char*)source;

}
望高手地点

解决方案 »

  1.   


      前面加上
      CoInitizlize();
       最后加上
      CoUninitialize(). 
      

  2.   

    加上下面这段代码
    if( !AfxOleInit() )
      {
    AfxMessageBox("组件初始化失败!");
    return false;
      }
      

  3.   

    请问为什么要加AfxOleInit();???请指点,非常谢谢,解决了马上结贴,
      

  4.   

    AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成下面的网址有相关例子http://www.csdn.net/develop/article/21/21087.shtm
      

  5.   

    CoInitialize和AfxOleInte()还不是一样,不过前者是调用API,后者是MFC