如何配置ADODB以使用服务名称连接Oracle

时间:2014-07-21 09:50:40

标签: php oracle connection adodb

我的ADODB与Oracle的连接存在服务名称问题。
这是我与Oracle服务器的连接
enter image description here

这是我的代码

$dbhostname     = "10.0.4.51";
$dbusername     = "user1";
$dbpassword     = "user1";
$port           = "1521";
$db   = ADONewConnection('oci8');
$cstr = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$dbhostname)(PORT=$port))
        (CONNECT_DATA=(SID=$tnsname)))";
$db->Connect($cstr, $dbusername, $dbpassword) or die('db not available');

但由于此连接,我仍然无法对我的查询做任何事情 如果有任何建议,我完全感谢你:)

2 个答案:

答案 0 :(得分:0)

我不是PHP专家,但我有两个想法。

  1. 尝试使用Oracle的EZconnect连接字符串,让Oracle全力以赴。在你的情况下,它将是:

    10.0.4.51:1521/devoltp

  2. 我注意到您的连接对话框使用了服务名称,但在您的连接字符串中指定了SID。将$cstr中的“SID”更改为“服务名称”

  3. EZ Connect Examples

答案 1 :(得分:0)

试试这个简单的课程

class AdoConnection {

    public $dbh;

    public function __construct() {
        include_once '../adoconnection/adodb5/adodb.inc.php'; // include your adodb.inc.php file

        $server = "127.0.0.1";
        $user   = "USER/SCHEMA/Database";
        $pwd    = "password";
        $db     = "SID OR Service_Name";

        $this->dbh = NewADOConnection('oci8');
        $this->dbh->Connect(FALSE, $user, $pwd, '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ' . $server. ')(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ' . $db . ') (SID = ' . $db . ')))');
    }

    public function select($sql) {
        $result = $this->dbh->Execute($sql);
        $result = $result->GetRows();
        return $result;
    }

    public function insert($sql) {
        $result = $this->dbh->Execute($sql);
        return $result;
    }
}

$dbh = new AdoConnection();

$dbh->select($sql);
$dbh->insert($sql);

只需保持error_reporting和display_errors为On即可查看错误。