[b]VS2010 MFC 利用ADO调用SQL2000数据库.  求好心人,为我解答解答!本机装的是SQL2008,运行MFC执行文件通过TCP/IP,用户名,密码,连接局域网内装有SQL2000的电脑,连接成功,并且程序运行正常。
但是,将exe文件拷贝到那台装有SQL2000的电脑上,再运行时,却在创建
HRESULT hr = pMyConnect.CreateInstance(__uuidof(Connection));
会失败,出现“程序异常,创建实例失败!”,不知道是什么原因?代码:
BOOL CPage4::AutoDataInsertDataBase()
{
    _ConnectionPtr pMyConnect = NULL;
    _RecordsetPtr pRecordset = NULL;    HRESULT hr = pMyConnect.CreateInstance(__uuidof(Connection));
    if(FAILED(hr)) 
    {
MessageBox(_T("程序异常,创建实例失败1!"),_T ("警告"),MB_ICONWARNING|MB_OK);
return FALSE;
    }
    if (FAILED(pRecordset.CreateInstance(__uuidof(Recordset)))) 
    {
MessageBox(_T("程序异常,创建实例失败2!"),_T("警告"),MB_ICONWARNING|MB_OK);
return FALSE;
    }
    if(!OpenDataBase(pMyConnect, pRecordset))
    {
        MessageBox(_T("数据库打开失败!请先确认数据库参数配置是否正确!"),_T("警            告"),MB_ICONWARNING|MB_OK);
return FALSE;
    }    pMyConnect->Close();  /*****关闭数据库****/
    pMyConnect.Release();
    pMyConnect = NULL;
    pRecordset.Release();
    pRecordset = NULL; 
    return TRUE;
}BOOL CPage4::OpenDataBase(_ConnectionPtr &nMyConnect, _RecordsetPtr &nRecordset)
{
    CString tempConnect;
    tempConnect.Format(_T("Provider=SQLOLEDB;Server=%s;Database=%s;uid=%s;pwd=%s;"), dbSetInfo.ServerName, bSetInfo.DataBaseUser, dbSetInfo.DataBasePassWord);    _bstr_t strConnect = (_bstr_t)tempConnect;
    //执行连接
    try
   {
nMyConnect->Open(strConnect, "", "", NULL); 
   }
   catch (_com_error &e)
   {
        MessageBox(e.Description(), _T("警告"), MB_OK|MB_ICONINFORMATION); 
return FALSE;
   }
   return TRUE;
}[/b]mfcsql数据库

解决方案 »

  1.   

    连接字符串  的问题吧?ado助手http://download.csdn.net/detail/zyq5945/2675267
      

  2.   

    1、在你SQL2000的电脑上
    看看你在程序中import进来的ADO的路径对吗?或者就是初始化COM库问题?
    // do stuffCoinitialize(NULL);// do the ADO callsCounitialize();// do other stuff创建pMyConnect对象的时候 试试这样创建
    pMyConnect.CreateInstance("ADODB.Connection");
    具体看看这个blogs:http://blog.csdn.net/friendan/article/details/6981238
      

  3.   

    检查下CreateInstance的返回值,看报什么错。
    HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");
    if (FAILED(hr))
    {
    _com_error e(hr);
    AfxMessageBox(e.ErrorMessage());
    return;
    }
      

  4.   

    估计是ADO版本问题,把开发机的ADO拷贝过去,用regsvr32注册下。