_ConnectionPtr ADOConn;  
_RecordsetPtr m_pADOSet;
CString strConnect;  
::CoInitialize(NULL);  
strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ascw;Data Source=notebook";try  
{  
//ADOConn.CreateInstance(__uuidof(Connection));  
ADOConn.CreateInstance( "ADODB.Connection");   
if (ADOConn==NULL)  
  {  
  AfxMessageBox( "失败! \r\n ");  
  return;  
  }
//ADOConn-> Open((const char *)strConnect, " ", " ",adModeUnknown);//adConnectUnspecified  
ADOConn-> Open((_bstr_t)strConnect, " ", " ",adModeUnknown);  }  
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format(_T("连接数据库失败!/r/n错误信息:%s"),e.ErrorMessage());
AfxMessageBox(errormessage);
}
连接数据库为sqlserver2000,执行到ADOConn-> Open时出现异常,e.ErrorMessage()信息为IDispatch error #3149,连接字符串是没问题的,已经在vb里用ado.connection对象连接测试成功!另外sqlserver2000的安全性设置为sqlserver和windows,安全性设置是没问题的,大家帮忙看下是什么问题,谢谢了!

解决方案 »

  1.   

    vc菜单中有手动连接数据库的,连接通后,把编辑框中的文本复制过来,贴在strConnect中。
      

  2.   

    连接字符串是没问题的,已经在vb里用ado.connection对象连接测试成功
      

  3.   

    这是我的连接SQL2000的方法,楼主可以参考下:
    _ConnectionPtr   g_pConnPtr; if (FAILED(this->g_pConnPtr.CreateInstance("ADODB.Connection")))
    {
    AfxMessageBox("Create Instance failed!");
    return false;
    }
    this->g_pConnPtr->ConnectionTimeout = 3 ;///创建Connection对象
    // g_pConnPtr->Is

    CString strSRC;
    strSRC="Driver=SQL Server;Server=";
    strSRC+="数据库IP地址";
    strSRC+=";Database=";
    strSRC+="你的数据库名称";

    CString temp ; 
    temp.Format(";UID=%s ; PWD=%s" , "用户名" , "密码");
    strSRC+= temp ;

    _variant_t varSRC(strSRC);
    // _variant_t varSQL(strSQL);
    _bstr_t bstrSRC(strSRC);

    try
    {
    if (FAILED(this->g_pConnPtr->Open(bstrSRC,"","",-1)))
    {
    AfxMessageBox("Can not open Database!");
    this->g_pConnPtr.Release();
    return false;
    }
    }
    catch(_com_error e) 

    AfxMessageBox("数据库服务器连接失败!\n"); 
    return false; 

    return true ;
      

  4.   

    http://blog.sina.com.cn/s/blog_438414c901008z25.html该死的:IDispatch error #3149!
    Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Psaaword=sa; Initial Catalog=pubs
    忘记写Password=sa了,因为我建的数据库有密码!!
      

  5.   

    我的sqlserver2000里sa密码是空的,所以可以省略,也可以加上password=;运行结果都是一样的,open是出现异常:IDispatch error #3149
      

  6.   

    用这个软件测试下连接字符串和SQL。
      

  7.   

    问题解决了,不是字符串的问题,是open时输入的参数" "有误,应该是"",太隐蔽了;
    最后得感谢竹叶青的软件,试过字符串连接数据库是没问题的,就顺便复制了软件里open的代码,哪知道居然连接成功,最后仔细比较了下,原来是参数出问题!