Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 

143 righe
3.7 KiB

<?php
/**
* Description of Database
*
* @author Anselmo
*/
class Database {
//put your code here
public $db = null;
/**
* Costruttore di classe
*/
public function __construct($DBMS = "Oracle", $dbName = "", $params = "") {
$this->db = new Oracle($dbName, $params);
}
/**
* Restituisce l'oggetto connessione
*
* @return Oggetto connessione
*/
public function GetConnection() {
return $this->db->_connection;
}
}
class Oracle extends Database {
private $_connection;
private $_dbName;
public function __construct($dbName, $params = "") {
$this->_setConnection($dbName, $params);
}
private function _setConnection($dbName, $params) {
if (!is_array($params)) {
$this->_connection = false;
} else {
try {
$conn = new PDO("oci:dbname=" . $dbName, $params['DB_USER'], $params['DB_PASS']);
if (!$conn)
$this->_connection = false;
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->_connection = $conn;
if(!$this->_connection){
return false;
}else{
$query1= "ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-RR' NLS_DATE_LANGUAGE = 'AMERICAN' NLS_LANGUAGE = 'AMERICAN' NLS_TERRITORY = 'AMERICA' NLS_TIMESTAMP_FORMAT = 'DD-MON-RR HH.MI.SSXFF AM' NLS_TIMESTAMP_TZ_FORMAT = 'DD-MON-RR HH.MI.SSXFF AM TZR' NLS_TIME_FORMAT = 'HH.MI.SSXFF AM' NLS_TIME_TZ_FORMAT = 'HH.MI.SSXFF AM TZR' ";
$sh = $this->prepare($query1);
try {
$sh->execute();
} catch (PDOException $exc) {
}
}
} catch (PDOException $e) {
// echo "<br/><br/>OOPS! <br/>Connessione fallita.";
}
}
}
public function getDbName() {
return $this->_dbName;
}
public function prepare($sql) {
return $this->_connection->prepare($sql);
}
public function lastInsertId($class) {
$obj = new $class();
$sql = "SELECT " . $obj::SEQ_NAME . ".CURRVAL AS LASTINSERTID FROM DUAL";
$sh = $this->prepare($sql);
try {
$sh->execute();
$it = $sh->fetch(PDO::FETCH_ASSOC);
$ritorno = $it['LASTINSERTID'];
} catch (PDOException $exc) {
$exc->getMessage();
}
return $ritorno;
}
public function db_transactionStart() {
$res = true;
if (!$this->db_inTransaction()) {
$res = $this->_connection->beginTransaction();
}
return $res;
}
public function db_transactionCommit() {
return $this->_connection->commit();
}
public function db_transactionRollback() {
return $this->_connection->rollback();
}
public function db_inTransaction() {
return $this->_connection->inTransaction();
}
public function db_errorInfo() {
return $this->_connection->errorInfo();
}
public function disableAutocommmit() {
try {
$this->prepare("SET AUTOCOMMIT = OFF");
$this->execute();
} catch (Exception $exc) {
echo $exc->getMessage();
}
}
}
if (!isset($con)) {
$connessione = new Database(DBMS, DB_SERVER, array('DB_USER' => DB_USER, 'DB_PASS' => DB_PASS));
$con = $connessione->db;
}
if (!isset($conSpid)) {
$connessioneSpid = new Database(DBMS, DB_SERVER_SPID, array('DB_USER' => DB_USER_SPID, 'DB_PASS' => DB_PASS_SPID));
$conSpid = $connessioneSpid->db;
}