用下面的代码能成功连接SQL2000,但是连接Oracle出现问题;
是需要import别的库文件,还是要修改数据库连接字符串,
请大家帮忙看下,谢谢////////// DBTestDlg.cpp
BOOL CDBTestDlg::OnInitDialog()
{
    if(!AfxOleInit())  
    {   
        AfxMessageBox("OLE初始化出错!");   
        return   FALSE;   
    }
}////////// stdafx.h
//引入SQLO安装目录下的ADO库文件
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")////////// DBControl.cpp//获取当前目录(用来找到INI文件)
CString CDBControl::GetModuleDir()
{
    char pFileName[256];
    GetModuleFileName( NULL, pFileName, 255 );
    
    CString csFullPath(pFileName);
    int nPos = csFullPath.ReverseFind( _T('\\') );
    if( nPos < 0 )
        return CString("");
    else
        return csFullPath.Left( nPos );
}//读配置文件,初始化数据库连接字符串
void CDBControl::ReadIni()
{
    CString retVal;
    CString iniPath;
    iniPath =  GetModuleDir();
    iniPath.Insert(iniPath.GetLength(),"\\config.ini"); 
    GetPrivateProfileString("DB参数设置","服务器名","Default",strServer.GetBuffer(0),MAX_PATH,iniPath);
    GetPrivateProfileString("DB参数设置","数据库名","Default",strDataBase.GetBuffer(1),MAX_PATH,iniPath);    GetPrivateProfileString("DB参数设置","用户名","Default",strUserName.GetBuffer(2),MAX_PATH,iniPath);
    GetPrivateProfileString("DB参数设置","密码","Default",strPassword.GetBuffer(3),MAX_PATH,iniPath);
    retVal.Format("Driver=SQL Server;Server=%s;Database=%s;UID=%s;PWD=%s",strServer,strDataBase,strUserName,strPassword);
    strConn = retVal; //数据库连接字符串(全局变量) 
}//连接数据库,并查询数据表
BOOL CDBControl::mySQLQuery(TTSDATA_2CONVERT* TTSInfo)
{
    ReadIni(); //获取数据库连接字符串 (全局变量)  
    BOOL retFlg = FALSE;
    
    try
    {    
        if(FAILED(pPtr.CreateInstance("ADODB.Recordset")))   
        {   
            return FALSE; 
        }   
        
        //数据库连接字符串(全局变量)
        CString  strSRC=strConn;     
        
        //查询语句
        CString strSQL = "select username,sendid,content from VOI_SendSound where content is not null and switchflag=0 and rownum<=100 and sendtime<sysdate";   
        _variant_t   varSRC(strSRC);   
        _variant_t   varSQL(strSQL);   
        
/****************打开数据库出现错误!!!!!!***********************/
        if(FAILED(pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCmdText)))   
        {   
/****************打开数据库出现错误!!!!!!***********************/
            retFlg= FALSE;
            pPtr.Release();   
            return  retFlg;   
        }   
        
        while(!pPtr->GetadoEOF())   
        {   
           //把查询结果填充到结构体中            
            retFlg = TRUE;             
            pPtr->MoveNext();  
        }   
        
        
        pPtr->Close();  //关闭数据库连接,释放资源 
        pPtr.Release(); 
    }
    catch (CException* e)
    {    
        return FALSE;
    }      
    return retFlg;
}

解决方案 »

  1.   

    /*在线等*/
    _ConnectionPtr  pConn;
     _RecordsetPtr   pPtr;   
      

  2.   

    用下面的代码连接,也不可以    CoInitialize(NULL);
    pConn.CreateInstance(__uuidof(Connection));
    try
    {
    pConn->ConnectionTimeout = 5; 
    pConn->Open(_T("DSN=192.168.1.10"), _T("callcenter"),_T("callcenter"), adModeUnknown);
    }
    catch(_com_error e) 
    {
    AfxMessageBox(e.ErrorMessage());

    CoUninitialize(); 
      

  3.   

    CString retVal;
    retVal.Format("Provider=OraOLEDB.Oracle.1;User ID=%s;Password=%s;" "Data Source='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" "(HOST=%s)(PORT=1521)))(CONNECT_DATA=(SID=%s)))'",strUserName,strPassword,strServer,strDataBase);
      

  4.   

    CString retVal;
    retVal.Format("Provider=OraOLEDB.Oracle.1;User ID=%s;Password=%s;" "Data Source='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" "(HOST=%s)(PORT=1521)))(CONNECT_DATA=(SID=%s)))'",strUserName,strPassword,strServer,strDataBase);