使用ADO访问数据库的时候。我用的是 try
{
m_Conn.CreateInstance(__uuidof(Connection));
_bstr_t conn="Provider=MSDAORA.1;Data Source=test;User ID=test; Password=test"; m_Conn->Open(conn,"","",0); 
}
catch (_com_error e)
{
AfxMessageBox(e.ErrorMessage());
m_Conn=NULL;
m_Rec=NULL;
return;
}可是老出错。好像是这个东东写错了。Provider=MSDAORA.1;你们一般用的是什么呢?

解决方案 »

  1.   

    我一般直接写Provider=MSDAORA
    "Provider=MSDAORA;Data Source=serverName;User ID=userName; Password=userPassword;"
      

  2.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoracleclientoracleconnectionclasstopic.asp
      

  3.   

    用这个吧,久经考验的函数!
    BOOL CAdoConnection::ConnectOracleServer(CString dbsrc, CString user, CString pass)
    {
    CString strConnect = _T("Provider=OraOLEDB.Oracle.1; Data Source=") + dbsrc + 
     _T("; User ID=") + user + 
     _T("; Password=") + pass; long lOptions = adConnectUnspecified;
    return Open(LPCTSTR(strConnect), lOptions);}
      

  4.   

    偶是这样用的
    try
    {
    ADOConn.CreateInstance(__uuidof(Connection));
    if(ADOConn->GetState()==adStateClosed)
        ADOConn->Open("Provider=OraOLEDB.Oracle;Data Source=database;user id=scott;password=tiger","","",adConnectUnspecified);
    }
    // Catch Exceptions
    catch(_com_error &e)
    {
    CString err;
    err.Format("%s", (char*)(e.Description()) );
    AfxMessageBox(err);
    }
    catch(...)
    {
    AfxMessageBox("Unknown Error...连接数据库失败!");

    }
      

  5.   

    不行。还是出错。Unknow error 0x800A0E7A
      

  6.   

    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=5949
      

  7.   

    是不是没有初始化COM环境?
      

  8.   

    如果系统环境不对有可能Microsoft的Provider不行,可以改用ORACLE的Provider=oraoledb.oracle
      

  9.   

    1.ACCESS 2000    _ConnectionPtr m_pConn;
        CString m_sConn="Provider=Microsoft.Jet.OLEDB.4.0.1;Data Source=d:\\db1.mdb";
        m_pConn.CreateInstance("ADODB.Connection");
        try
        {
            HRESULT hr=m_pConn->Open((_bstr_t)m_sConn,"","",adConnectUnspecified);    
            if (FAILED(hr))
            {
                AfxMessageBox("不能连接数据库 source!");
                return FALSE;
            }
        }
        catch(_com_error e)
        {
            AfxMessageBox("不能连接数据库 error!");
            return FALSE;
        }2.SQL Server 2000    _ConnectionPtr m_pConn;
        CString m_sConn="Provider=SQLOLEDB.1;Data Source=192.168.3.9;Initial 
    Catalog=sode"; //sode是数据库服务器192.168.3.9上的一个数据库
        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;
        }3.Oracle 9i    _ConnectionPtr m_pConn;
        CString m_sConn="Provider=MSDAORA.1;Data Source=sode_192.168.3.9"; //使用
    ms连接库,sode为SID,192.168.3.9为机器ip
        m_pConn.CreateInstance("ADODB.Connection");
        try
        {
            HRESULT hr=m_pConn->Open((_bstr_t)m_sConn,"sodeUser","sodePw",adConnectUnspecified);    
            if (FAILED(hr))
            {
                AfxMessageBox("不能连接数据库 source!");
                return FALSE;
            }
        }
        catch(_com_error e)
        {
            AfxMessageBox("不能打开数据库 error!");
            return FALSE;
        }
      

  10.   

    在CXXX::InitInstance()再加上
    AfxEnableControlContainer();// Create ADO Connection
    if( FAILED(::CoInitialize(NULL)) ) 
    {
        AfxMessageBox("ADO Init failed");
        return false;
    }
    再试试吧