按照某书上的例子,当调用OnInitADOConn()时,总是打不开数据库,并出现错误ERROR0。请大家帮忙分析一下问题到底在哪里?void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Recordset");
_bstr_t strConnect="Provider=SQLOLEDB;Server=217-1\SDB;Database=wuhan; uid=sa;pwd=tpbms;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("ERROR0:"+e.Description());
}
}

解决方案 »

  1.   

    什么错误啊?也不说。
    这个Server怎么这么怪呢?
      

  2.   

    将错误的文字说明输出来看看啊;;void LogADOError(_com_error& ce, ADODB::_ConnectionPtr& conn)
    {
    TRACE("ADODB Error : 0x%08x, 错误描述(%d):\n", ce.Error(), conn->Errors->Count);
    for(int i = conn->Errors->Count; i>0; --i)
    {
    long index = 0;
    TRACE("%s\n", (LPCTSTR)(conn->Errors->Item[index++]->Description));
    }
    }
      

  3.   

    "Driver={SQL Server};Server=217-1\SDB;Database=wuhan;Uid=sa;Pwd=tpbms;"
    换一下连接字符串看看,还有给出错误
      

  4.   

    看了一下:觉得你的
    m_pConnection.CreateInstance("ADODB.Recordset");
    有问题,m_pConnection应该是一个连接对象。你怎么调用了数据表对象了
    这样用:
    m_pConnection.CreateInstance("ADODB.Connection");
    或者
    m_pConnection.CreateInstance(__uuidof(Connection));//这种用法的参数可能有误,但是有这种用法,具体你查查资料!
    还有你要检查你的
    _bstr_t strConnect="Provider=SQLOLEDB;Server=217-1\SDB;Database=wuhan; uid=sa;pwd=tpbms;";
    m_pConnection->Open(strConnect,"","",adModeUnknown);
    我由于手边没有这方面的资料,所以不能说明没有问题,具体的你查查资料!
      

  5.   

    "e.Description"什么内容都不显示啊!只能显示“ERROR0”,
    另外,我听有人说是需要在app wizard 时必须指定数据库连接。如果那时候不指定,后面就没有办法连上去了,改都没法改。是不是真的啊?
      

  6.   

    可以在代码里写
    app wizard 里也是生成代码
      

  7.   

    appwizard产生的代码在什么文件里面呢?我找不到
      

  8.   

    给你个例子:
    _ConnectionPtr m_pConn;
        CString m_sConn="Provider=SQLOLEDB.1;Data Source=192.168.3.9;Initial 
    Catalog=sode";
        m_pConn.CreateInstance("ADODB.Connection");
        try
        {
            HRESULT hr=m_pConn->Open((_bstr_t)m_sConn,"sa","mapper",adConnectUnspecified);    
            if (FAILED(hr))
            {
                AfxMessageBox("不能连接数据库 source!");
                return FALSE;
            }
        }
        catch(_com_error e)
        {
            AfxMessageBox("不能连接数据库 error!");
            return FALSE;
        }
      

  9.   

    先检查一下 217-1\SDB 是否可用
      

  10.   

    m_pConnection.CreateInstance("ADODB.Recordset");错误我的代码正确的
    AfxOleInit();
    m_pConnection.CreateInstance(__uuidof(Connection));
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    m_pStream.CreateInstance(__uuidof(Stream));
    try{
    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\vbtest\\db2.mdb;","","",0); 
     }
    catch(_com_error e) 
    {
     AfxMessageBox(e.ErrorMessage());
    }
      

  11.   

    m_pConnection.CreateInstance("ADODB.Recordset");
    这个语句本身就有问题啊,创建连接怎么会用了记录参数呢?