delphi连Oracle一般是要有oracle客户端的
如果在数据库本地,当然是没问题啦
你可以检查一下客户端机器上的tnsnames.ora里面的连接名是不是和你的DELPHI的ADO空间测试连接时一样的,如果不一样,就会出现你说的错误。。

解决方案 »

  1.   

    这个问题我也遇到过,就像楼上所说的,用ADO控件连接远程ORACLE服务器要在客户端上装上ORACLE客户端。
      

  2.   

    EGOV4JS_172.18.27.44 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.27.44)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = egov4js)
          (SERVER = DEDICATED)
        )
      )
    请帮我看看,这是tnsnames.ora里面的连接名,此处的server 到底是什么东东啊?
      

  3.   

    那你在设置ADO的时候,就这样“输入服务器名称”
    EGOV4JS_172.18.27.44 “用户名称:”你的用户名
    “密码:”    不用俺说了吧然后选“允许保存密码”这里的SERVER = DEDICATED是oracle的一种进程结构,和你的delphi连接没有关系。。
      

  4.   

    我在delphi中用ado动态连接oracle时老报ORA-12154:TNS:无法处理服务名
    我用的时Oracle Provider for OLE DB.
    用Mircosoft OLE DB Provider for Oracle驱动连接,报连接未被打开 的错误
    在用ADO控件静态调用时能成功。
    本机与调用运程机器oracle出现同样的错误.
      

  5.   

    ATGC:这些我都试过了,没有用的。
      

  6.   

    你说的动态连接是实时改变连接字符串吧?1、如果你用Oracle Provider for OLE DB,那就是如下这样
    ADOQuery1.ConnectionString := 'Provider=OraOLEDB.Oracle.1;Password=genomics;Persist Security Info=True;User ID=system;Data Source=atgc';
    这里是数据源,我的是atgc,你的是“EGOV4JS_172.18.27.44 ”2、如果你用Mircosoft OLE DB Provider for Oracle,那就是如下这样
    ADOQuery1.ConnectionString := 'Provider=MSDAORA.1;Password=genomics;User ID=system;Data Source=atgc;Persist Security Info=True';
      

  7.   

    还有你可以测试一下在SQL*PLUS里能不能这样登录CONN 你的用户名/密码@EGOV4JS_172.18.27.44如果这样的行的话,那么ADO连接肯定行,
    如果在SQL*PLUS里面不能这样登录,那么说明有其它问题
      

  8.   

    把tnsname.ora中的 (SERVER = DEDICATED)去掉试试看