HRESULT hr;hr=m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("Provider=SQLOLEDB; Server=madcoder;"
"Database=NorthWind; uid=sa; pwd=98009207;","","",adModeUnknown);
if (!m_pConnection->State)
AfxMessageBox("hehe");
}
跟踪的时候发现,hr总是不能正确的初始化,总是个负值,怎么回事啊?

解决方案 »

  1.   

    try{
    hr=m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
    if(SUCCEEDED(hr))
    {
    hr = m_pConnection->Open("Provider=SQLOLEDB; Server=madcoder;"
    "Database=NorthWind; uid=sa; pwd=98009207;","","",adModeUnknown);
    if (!m_pConnection->State)
    AfxMessageBox("hehe");
    }
    }
    catch(_com_error &e)
    {
       _bstr_t bstrSource(e.Source());
            _bstr_t bs =  _bstr_t(" Error: ") + _bstr_t(e.Error()) + _bstr_t(" Msg: ") 
                + _bstr_t(e.ErrorMessage()) + _bstr_t(" Description: ") 
                + _bstr_t(e.Description());
            
            MessageBox(0,bs,bstrSource, MB_OK);
    }
    加上上面一段代码,查看异常,并有中文出错提示。
    你还可以用
    int nRet = GetLastError();
    来看出错的地方在哪里。不过这个没有上面来得详细,建议用第一个。
      

  2.   

    hr = m_pConnection->Open("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=NorthWind;Data Source=madcoder;Password=98009207","","",adModeUnknown);
      

  3.   

    你写了初始化COM的语句没有??CoInitialize(NULL);
      

  4.   

    App类的InitInstance()函数里面添加:
    CoInitialize(NULL);
      

  5.   

    同意楼上的,你是否CoInitialize(NULL);初始化了com??
      

  6.   

    String strConnection = "driver={SQL Server};Server=192.168.0.100;DATABASE=jskj;UID=sa";//sql2000
    try
    {
    hr = m_pConnTemp.CreateInstance("ADODB.Connection");// if(SUCCEEDED(hr))
    {
    hr=m_pConnTemp->Open((_bstr_t)strConnection,"","",adModeUnknown);
    }
    }
    catch(_com_error e)
    {
    CCommon common;
    AfxMessageBox(common.DisplayAdoError(m_pConnTemp));

    if (m_pConnTemp != NULL)
    {
    if (m_pConnTemp->State)
    {
    if (m_pConnection != NULL)
    {
    if (m_pConnection->State)
    {
    m_pConnection->Close ();
    }
    }
    m_pConnection = m_pConnTemp;
    }
    }