Ir para conteúdo
Fórum Script Brasil
  • 0

Adodb


Beraldo

Pergunta

Script postado por: dmetallica

:: ADODB ::

*Pessoal fiz essa classe para abstrair as rotinas de acesso a base com o MySQL assim ficando mais fácil e mais parecido com ASP.

OBS: Feito para PHP 5.0.1 e MySQL 4.0

/*
 * Classe:         ADODB
 * Finalidade:     Abstrair o acesso a base de dados MySQL deixando assim o desenvolvimento mais rapido e eficiente.
 * Design Pattern: Singleton a conexão está com singleton.
 * Data:           07/12/2005 00:41:00.000
 * Autor:          Diego Pacheco
 * Contato:        pacheco_programador@hotmail.com
 *
 */

class ADODB
{
    /* Identificador da conexão com o banco */
    static private $id_cnn = null;
    
    /* Identificador da ultima query executada! */
    static private $query = null;

    /* Identificador do registro que está sendo lido agora! */
    static private $recordSet = null;

    
    /* Construtor vazio que será usado para fazer o pattern Singleton. */
    private function __construct() {}
    
    /* Metodo que conecta com a base e devolve uma conexão com o banco */
    static public function getInstance($host,$banco,$usuario,$senha)
    {
       if (!isset(self::$id_cnn))
       {
          self::$id_cnn = mysql_connect($host,$usuario,$senha);
          mysql_select_db($banco,self::$id_cnn);
       }
       return self::$id_cnn;
    }

    /* Metodo que executa uma query */
    static public function execute($sql)
    {
    self::$query = mysql_query($sql,self::$id_cnn);
    return self::$query;
    }

    /* Metodo que informa quantas linhas existem na query */
    static public function rowsAfected()
    {
       return mysql_num_rows(self::$query);
    }
  
    
    /* Metodo que anda para o proximo registro retorna true quando acabou os registros! */
    static public function EOF()
    {
       self::$recordSet =  mysql_fetch_array(self::$query);
       return (!(self::$recordSet));
    }
    
    /* Metodo que retorna o campo de um registro */
    static public function fields($campo)
    {
       return self::$recordSet[$campo];
    }
    
    /* Metodo que retorna o número do erro da base */
    static public function getErrNum()
    {
      return mysql_errno();
    }
    
    /* Metodo que retorna a mensagem de erro da base. */
    static public function getErrDesc()
    {
       return mysql_error();
    }
    
    /* Destrutor da classe ao objeto ser destruido ele fecha a conexão com o banco! */
    function __destruct()
    {
       mysql_close(self::id_cnn);
    }

}

?>
Exemplo Funcional:
<?php

include("ADODB.php");

/* Conecta com a base de dados. */
ADODB::getInstance("localhost","gem","root","");

/* Executa um SQL */
ADODB::execute("Select * from encontros ");

/* Percore os dados */
while (!ADODB::EOF())
{
   /* Pega o campo data e imprime na tela. */
   echo "Data: ".ADODB::fields("data")."<BR>";
}

/* Mostra o total de tuplas */
echo "<BR> Total de Registros: ".ADODB::rowsAfected()."<BR>";

/* Executa um SQL qualquer(Força o erro!) */
ADODB::execute("insert master_not_exist into (val) values(1) ");

/* Verifica se deu erro */
if (ADODB::getErrNum()!=0)
{
   /* Pega o número e a descrição do erro */
   echo "Num  Erro: ".ADODB::getErrNum()."<BR>";
   echo "Desc Erro: ".ADODB::getErrDesc()."<BR>";
}
else
{
  echo "Não deu erro!";
}


?>

:: B)

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...