/**
  * Função para ligar uma variável a um valor
  * @param string $campo
  * @param string $valor
  * @param string $tipo (STRING = DEFAULT, NULL, INT, STRING, BLOB)
  * param CONSTANTES $tipo
  * Tipos constantes:
  * Os tipos são:
  * "BOOLEAN"    ->  PDO::PARAM_BOOL  (integer)
  * Representa um tipo de dados booleano.
  * "NULL"       ->  PDO::PARAM_NULL (integer)
  * Representa um tipo de dados nulo.
  * "INT"        ->  PDO::PARAM_INT (integer)
  * Representa o um tipo de dado inteiro
  * "STRING      -> PDO::PARAM_STR (integer)
  * Representa o CHAR, VARCHAR, ou outros tipos de dados string.
  * "BLOB"       -> PDO::PARAM_LOB (integer)
  * Representa o tipo de dado BLOB - Binary Large Objects
  * param int Tamanho
  */
 public function liga($campo, $valor, $tipo = "STRING")
 {
     /*
      * Ajusto o tipo da variáveL
      */
     switch (strtoupper($tipo)) {
         case "BOOLEAN":
             $tp = PDO::PARAM_BOOL;
             break;
         case "NULL":
             $tp = PDO::PARAM_NULL;
             break;
         case "INT":
             $tp = PDO::PARAM_INT;
             break;
         case "BLOB":
             $tp = PDO::PARAM_LOB;
             break;
         default:
             $tp = PDO::PARAM_STR;
             break;
     }
     /* Tento ligar um valor ao parâmetro */
     Depurar::reg("Parametro: {$campo} Tipo:{$tipo} Valor:{$valor}");
     try {
         $this->resultado->bindValue(":" . $campo, $valor, $tp);
         //echo "liguei :{$campo} a {$valor}";
     } catch (PDOException $e) {
         die($e - getMessage());
     }
 }
 /**
  * Função que faz o registro em Log
  * @param string $string - O texto que será inserido no log
  * @return boolean - retorna true ou false (apos a escrita do arquivo)
  */
 public static function reg($string)
 {
     // Se não houverem
     if (self::$Depurar == null) {
         self::$Depurar = new Depurar();
         self::$Depurar->arquivo->deletar();
         self::$Depurar->arquivo->criar();
     }
     $arquivo = self::$Depurar->arquivo;
     return $arquivo->escrever("{$string}<br>\n");
 }
 /**
  * Método que executa a Instrução SQL e retorna a quantidade de registros afetados.
  */
 public function executa()
 {
     $ret = "";
     try {
         $ret = $this->resultado->execute();
     } catch (PDOException $e) {
         $this->conexao->rollBack();
         Depurar::reg("[ERRO] " . $e->getMessage());
     }
     if (!$ret) {
         $erro = ":Problemas na Execu&ccedil;&atilde;o do Comando SQL!";
         die(__FILE__ . ":" . __LINE__ . $erro);
     }
     return $this->resultado->rowCount();
 }
 /**
  * Termina uma transação com o Banco de Dados
  */
 public function fimTransacao()
 {
     if ($this->transacao) {
         $cnx = $this->getConexao();
         try {
             $cnx->commit();
             Depurar::reg("[FIM TRANS]");
         } catch (Exception $e) {
             $cnx->rollBack();
             Depurar::reg("[ERRO] ROLLBACK TRANS" . $e->getMessage());
             echo "Aconteceu um Erro: " . $e->getMessage();
             die;
         }
     }
     $this->transacao = false;
 }
 /**
  * Método que executa a consulta
  */
 public function executa()
 {
     if (!$this->exec) {
         try {
             $ret = $this->resultado->execute();
             $this->dados = false;
             $this->exec = true;
         } catch (PDOException $e) {
             $this->conexao->rollBack();
             Depurar::reg("[ERRO] " . $e->getMessage());
         }
         Depurar::reg("[OK]");
         //            $this->resultado->execute();
         //            $this->dados = false;
         //            $this->exec = true;
     }
 }