m_pConnection->ConnectionString = "Provider=SQLOLEDB.1;Password=farmers;Persist Security Info=True;User ID=sa;Initial Catalog=Dining;Data Source=127.0.0.1";这样就能连上数据库
_bstr_t strCnn("Provider=SQLOLEDB.1;Password=farmers;Persist Security Info=True;User ID=sa;Initial Catalog=Dining;Data Source=127.0.0.1");这样就连不上,为什么呢?

解决方案 »

  1.   

    _bstr_t strCnn("Provider=SQLOLEDB.1;Password=farmers;Persist Security Info=True;User ID=sa;Initial Catalog=Dining;Data Source=127.0.0.1");
    仅仅是给_bstr_t类型变量赋值了?!
    http://blog.csdn.net/zyq5945/archive/2010/05/13/5586423.aspx
      

  2.   

    BOOL ADO_sql::InitADO(WCHAR szSqlCnn[])
    {
    //初始化OLE/COM环境
    CoInitialize(NULL);
    try
    {
    m_pConnection.CreateInstance(__uuidof(_Connection));
                    
    //m_pConnection->ConnectionString = "Provider=SQLOLEDB.1;Password=farmers;Persist Security Info=True;User ID=sa;Initial Catalog=Dining;Data Source=127.0.0.1";//这种方式能连上
    _bstr_t strCnn("Provider=SQLOLEDB.1;Password=farmers;Persist Security Info=True;User ID=sa;Initial Catalog=Dining;Data Source=127.0.0.1");//但定义个_bstr_t变量,使用这个变量值就连不上了

    m_pConnection->Open(strCnn,"","",NULL);
    }
    catch(_com_error &e)
    {
    return FALSE;
    }
      

  3.   

    BOOL ADO_sql::InitADO(WCHAR szSqlCnn[])
    {
    //初始化OLE/COM环境
    CoInitialize(NULL);
    try
    {
    m_pConnection.CreateInstance(__uuidof(_Connection)); //m_pConnection->ConnectionString = "Provider=SQLOLEDB.1;Password=farmers;Persist Security Info=True;User ID=sa;Initial Catalog=Dining;Data Source=127.0.0.1";
    //m_pConnection->Open("","","",NULL);
    //上面这种方式能连接成功
    _bstr_t strCnn("Provider=SQLOLEDB.1;Password=farmers;Persist Security Info=True;User ID=sa;Initial Catalog=Dining;Data Source=127.0.0.1");
    m_pConnection->Open(strCnn,"","",NULL);
    //这种方式连接失败
    }
    catch(_com_error &e)
    {
    return FALSE;
    } return TRUE;
    }
      

  4.   

    我试了一下俩个都可以正常打开
    HRESULT hr = S_OK;
    _ConnectionPtr m_pCon = NULL;
    m_pCon.CreateInstance(__uuidof(Connection));
    m_pCon->ConnectionString = "Provider=SQLOLEDB.1;Server=127.0.0.1;User ID=sa;Password=sa@2008;Persist Security Info=false;Initial Catalog=tempTable;";
    hr = m_pCon->Open("","","",NULL);
    if (m_pCon->GetState())
    {
    m_pCon->Close();
    }
    if (!m_pCon->GetState())
    {
    AfxMessageBox("关闭成功");
    }

    m_pCon.CreateInstance(__uuidof(Connection));
    _bstr_t strConn("Provider=SQLOLEDB.1;Server=127.0.0.1;Persist Security Info=True;Initial Catalog=tempTable;User ID=sa;Password=sa@2008;");
    hr = m_pCon->Open(_bstr_t(strConn), "", "", NULL);
    long liStatus = m_pCon->GetState();
    if (m_pCon->GetState())
    {
    AfxMessageBox("打开成功");
    } if (hr == S_OK)
    {
    return true;
    }
      

  5.   

    贴上自己 VC 连接 MSSQLServer2008的连接代码: ::CoInitialize(NULL);
    try
    {
    m_pConnection.CreateInstance("ADODB.Connection");
    _bstr_t strConnect="Provider=SQLNCLI10.1;Integrated Security=SSPI;Persist Security Info=False;User ID='';Initial Catalog=UserMan;Data Source=SYX-PC\\SQLEXPRESS;Initial File Name='';Server SPN=''";
    MessageBox(NULL, strConnect, "" , 0);
    m_pConnection->Open(strConnect,"","",adModeUnknown);
    }
    catch(_com_error e)
    {
    AfxMessageBox(e.Error());
    }本人的方法是先添加个 ADO DATA CONTROL用这个连接上数据库在复制它自动生成的连接字符串!
      

  6.   

    将return FALSE;改成AfxMessageBox(e.Description());
    看看捕获的错误是什么~