下面的代码可以连接Oracle 9g, 但是Oracel8g连接不上,
开发环境使用VC++6.0,连接数据库使用OLE DB方式;
请大家帮忙分析下原因,谢谢"Provider=OraOLEDB.Oracle.1;
User ID=call;Password=call;
Data Source='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
(HOST=192.168.1.1)(PORT=1521)))(CONNECT_DATA=(SID=orcl)))'"

解决方案 »

  1.   

    是8i和9i吧?
    你8i和9i的两个实例都叫ORCL吗?
      

  2.   

    用PL-SQL连接,
    参数配置都相同,实例都叫ORCL。
      

  3.   

    Provider=OraOLEDB.Oracle.1
    这个是什么意思呢?
      

  4.   

    如何查询Oracle驱动版本?
    Provider=OraOLEDB.Oracle.1
      

  5.   

    数据库服务器是在Linux系统上面
      

  6.   

    有兴趣可以看看
    http://download.oracle.com/docs/cd/B19306_01/win.102/b14311/toc.htm
    不过是讲10g的
      

  7.   

    用PL-SQL可以连接, SID也是ORCL
      

  8.   

    你试一下Provider=OraOLEDB.Oracle行不?
      

  9.   


    //本地电脑Oracle版本是8.1,系统是2003;
    //远程服务器Oracle版本是9,系统是Linux.
    //使用PL-SQL能连接上,但是用程序连接不上。。//数据库连接字符串和代码如下:
    "Provider=OraOLEDB.Oracle.1;
    User ID=call;Password=call;
    Data Source='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
    (HOST=192.168.1.1)(PORT=1521)))(CONNECT_DATA=(SID=orcl)))'"
    //只能初始化一次
    if((isInitCom==FALSE)&&(AfxOleInit() == 0))  
    {   isInitCom = TRUE; //被初始化一次,但是初始化失败
        return   FALSE;   
    }  
    else
    {   //成功初始化一次
     isInitCom = TRUE;
    }if(FAILED(pPtr.CreateInstance("ADODB.Recordset")))   
    {   return FALSE; 
    }   CString  strSRC;      
    strSRC=strConn; //数据库连接字符串

    //查询语句,测试查询语句没有问题
    CString strSQL = "select username,sendid,content from VOI_SendSound where content is not null and switchflag=0 and rownum<=10 and sendtime<sysdate";   
    _variant_t   varSRC(strSRC);   
    _variant_t   varSQL(strSQL);           if(FAILED(pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCmdText)))   
    {   return  FALSE; 
      

  10.   

    测试环境下能连接数据库,真实环境下无法连接,
    但是PL-SQL都可以连接上服务器,
    也确定SQL语句是正确的。
    能否查看驱动程序的版本OraOLEDB.Oracle.1???真实环境下:
    本地电脑Oracle版本是8.1,系统是2003;
    远程服务器Oracle版本是9,系统是Linux.测试环境下:
    本地电脑Oracle版本是9,系统是XP;
    远程服务器Oracle版本是9,系统是XP.连接字符串如下
    "Provider=OraOLEDB.Oracle.1;
    User ID=call;
    Password=call;
    Data Source='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
    (HOST=192.168.1.1)(PORT=1521)))(CONNECT_DATA=(SID=orcl)))'"
      

  11.   

    能否查看驱动程序的版本OraOLEDB.Oracle.1???
      

  12.   

    问题解决了,
    因为Oracle8环境下缺少OraOLEDB.dll和依赖的相关文件,
    从Oracle9下拷贝过去注册下就可以了。