4 Tipos de Conexão

Destinado a Artigos, Tutoriais e Matérias de colunistas, base em PHP, MySQL, JavaScript, HTML, CSS, jQuery, etc... entre outros.

Moderador: web

responder a dúvida

4 Tipos de Conexão

Mensagem por roxzin Offline » Qui Abr 22, 2010 2:26 pm

Olá pessoal este é meu primeiro post aqui , mas vamos ao que interressa e mão na massa.

Hoje vou demostrar como criarmos uma classe mãe de multiplos banco de dados e como usarmos ela seja sua própria classe ou em classe que sejam herdeiras suas. hehehe

Bom aqui está o codigo fonte:

Banco.class.php(Classe Pai)

Código: Selecionar todos
<?php

class Banco {
        var $Con;
        var $GetCon;
        var $DirCon;
        var $QueryLista;
        var $OracleQueryLista;
        var $TotalLista;
        var $TotalRegistros;
        var $Lista;
        var $ExeQuery;
        var $ExecQueryOracle;
        var $TipoCon = 1;                               
        var $Server = "localhost";
        var $Database ="oferta";         
        var $UserDb = "roxzin";
        var $PassWDDb = "12345";
        var $Erro_db = "Erro ao se conectar ao Banco de Dados.!!";
        var $CloseDatabase;
        var $DirecHome = "/path/pro/diretorio/do/oracle";
       
        /*# - Construtor da classe - #*/
        function Banco() {
                        $this->ConexaoODBC();
        }
       
        /*# - Metodo que conecta oo banco de dados e é chamado pelo Construtor da classe - #*/
        function ConexaoODBC(){
                switch($this->TipoCon){
                        //MSSQL (MICROSOFT SQL SERVER)
                        case 1:
                        $this->Con = mssql_connect($this->Server,$this->UserDb,$this->PassWDDb) or die($this->Erro_db);
                        $this->GetCon = mssql_select_db($this->Database,$this->Con);
                        break;
                        //MYSQL
                        case 2:
                        $this->Con = mysql_connect($this->Server,$this->UserDb,$this->PassWDDb) or die($this->Erro_db);
                        $this->GetCon = mysql_select_db($this->Database,$this->Con);
                        break;
                        //POSTGRESQL
                        case 3:         
                        $this->Con = pg_connect("dbname=$this->Database port=5432 host=$this->Server user=$this->UserDb password=$this->PassWDDb")
                                         or die($this->Erro_db);
                        break;           
                        //ORACLE 8I,9I,10G
                        case 4:
                        $this->Con = @ocilogon($this->UserDb, $this->PassWDDb, $this->Server)
                                         or die($this->Erro_db);
                        $this->DirCon = putenv("ORACLE_HOME=".$this->DirecHome."");
                        $this->GetCon = putenv("ORACLE_SID=".$this->Database."");
                        break;
                }               
               
        }
       
        /*# - Executa query de banco - #*/
        function ExecDatabase($StringSQL){
                switch($this->TipoCon){
                        case 1:
                                if($this->ExeQuery = mssql_query($StringSQL, $this->Con)){
                                        return true;
                                }else{
                                        return false;
                                }
                        break;
                        case 2:
                                if($this->ExeQuery = mysql_query($StringSQL, $this->Con)){
                                        return true;
                                }else{
                                        return false;
                                }
                        break;
                        case 3:
                                if($this->ExeQuery = pg_query($StringSQL, $this->Con)){
                                        return true;
                                }else{
                                        return false;
                                }
                        break;
                        case 4:
                                $this->ExecQueryOracle = ociparse($this->Con, $StringSQL);
                        $this->ExeQuery = ociexecute($this->ExecQueryOracle);
                        if($this->ExeQuery){
                                        return true;
                                }else{
                                        return false;
                                }
                        break;
                       
                }
        }
       
        /*# - Monta o objeto completo dos resultados da query - #*/
        function ViewDatabase(){
                switch($this->TipoCon){
                 case 1:
                        if($this->Lista = mssql_fetch_array($this->ExeQuery)){
                                        return TRUE;
                                }else{
                                        return FALSE;
                                }
                 break;
                 case 2:
                        if($this->Lista = mysql_fetch_array($this->ExeQuery)){
                                        return TRUE;
                                }else{
                                        return FALSE;
                                }
                 break;
                 case 3:
                        if($this->Lista = pg_fetch_array($this->ExeQuery)){
                                        return TRUE;
                                }else{
                                        return FALSE;
                                }
                 break;
                 case 4:
                        if($this->Lista = ocifetch($this->ExeQuery )){
                                        return TRUE;
                                }else{
                                        return FALSE;
                                }
                 break;
                }
        }
       
        /*# - Retorna o total de linhas afetadas - #*/
        function TotalNumRegistros(){
                switch($this->TipoCon){
                 case 1:
                        $this->TotalRegistros = mssql_num_rows($this->ExeQuery);
                 break;
                 case 2:
                         $this->TotalRegistros = mysql_num_rows($this->ExeQuery);
                 break;
                 case 3:
                         $this->TotalRegistros = pg_num_rows($this->ExeQuery);
                 break;
                 case 4:
                        $this->TotalRegistros = ocinumcols($this->ExeQuery);
                 break;
                }
                return $this->TotalRegistros;
        }
       
        /*# - Fecha conexão com o banco de dados - #*/
        function CloseODBC(){
                switch($this->TipoCon){
                        case 1:
                                $this->CloseDatabase = mssql_close($this->Con);
                        break;
                        case 2:
                                $this->CloseDatabase = mysql_close($this->Con);
                        break;
                        case 3:
                                $this->CloseDatabase = pg_close($this->Con);
                        break;
                        case 4:
                                $this->CloseDatabase = ocilogoff($this->Con);
                        break;
                }
        }
       
        /*# - Destrutor da classe - #*/
        function __destruct(){
                @CloseODBC();
        }
       
}
?>


Note que deixei alguns comentários referente ao que significa cada método e seus respectivos atributos, vale lembrar que está classe e altamente editável para seu uso.
note que ao instanciarmos nossa classe Banco, automaticamente seu construtor já faz a conexão baseado no servidor, login, senha e base de dados forncecidos dentro da classe, vale lembrar que estás variáveis que são para sua configuração:

$TipoCon = 1(Tipo de banco. Ex: 1- SQL server; 2- Mysql; 3- PostgreSql e 4- ORACLE);
$Server = "localhost"(Servidor);
$Database ="oferta"(Banco de dados);
$UserDb = "roxzin"(Usuário);
$PassWDDb = "12345"(Senha);


Bom vejamos como usar esta classe de um modo simples em uma Seleção de Dados e Uma Inserção.


Código: Selecionar todos
#teste_simples_selecao.php
<?php
require_once(Banco.class.php)
$ExecDb = new Banco;
if($ExecDb->ExecDatabase("SELECT * FROM CLIENTE")){
while($ExecDb->ViewDatabase()){
         echo $ExecDb->Lista['nome'].'<br>';
}
}
unset($ExecDb);
?>

#teste_simples_insercao.php
<?php
require_once(Banco.class.php)
$ExecDb = new Banco;
if($ExecDb->ExecDatabase("INSERT INTO CLIENTE (nome,email) VALUES ('Matheus Biagini','matheus@itcon.com.br')")){
echo "Inserido com sucesso!"
}else{
echo "Houve um erro!";
}
unset($ExecDb);
?>


Note que assim que Instanciamos a class Banco ela já faz a conexão com o banco de dados escolhido e assim no metodo ExecDatabase faz a execução da Query retornando verdadeiro ou false, bom assim que usamos o metodo ViewDatabase ele já acessa o atributo do metodo ExecDatabase trazendo nosso objeto populado com dados. Assim que executamos o atributo Lista['<nome do campo da tabela>'] ele já trás os dados.

Bom espero ter ajudado vocês, no meu proximo POST vou ensinar como usar esta classe em outras classe deixando assim um código flexivel e facil de alterar.

Obs: Não sei porque mas coloquei o código inteiro identado mas este forum zonea tudo heheh.


Abraços a todos.
Qualquer duvida é só postar.



detalhes...


roxzin
MEMBRO
MEMBRO
Mensagens: 42
Registrado em: Ter Out 14, 2008 7:35 pm
Localização: santa rosa de viterbo

4 Tipos de Conexão

Mensagem por web Offline » Qui Abr 22, 2010 3:20 pm

Funcionando blz. :talk:

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 11889
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil


responder a dúvida

Voltar para Laboratório de Artigos, Tutoriais e Matérias

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes