Abstração de Banco de Dados em PHP com ADODB

Abstração de banco de dados é mais útil do que se possa imaginar. Imagine você, fez um programa em PHP usando o banco MySQL, mas aí derrepente chega seu patrão e diz: "olha, compramos uma licença do Oracle e queremos migrar a base do nosso programa para esse banco".


Pronto, isso provavelmente irá acabar com seus próximos dias de sono.


O PHP apesar de ser uma linguagem maravilhosa, ela não tem uma boa escalabilidade na questão de banco de dados, para cada tipo de banco de dados, as funções, parametros, tudo muda! Então eis que surge o ADODB.


Mas o que é ADODB? É uma classe PHP, liberada sob licença livre que permite que você se "despreocupe" com o banco de dados que você está usando.


Vamos ao exemplo prático:


Para iniciar uma conexão ao banco de dados usando o ADODB vamos fazer o seguinte:


require("adodb/adodb.inc.php"); // lógicamente precisamos desse include para funcionar..
$db = ADONewConnection($mysql_oracle_oque_voce_quiser); // aqui instanciamos a classe para o objeto $db.
$result = $dbConnect($host_do_banco, $usuario, $senha, $nomedobanco);
// ok, agora ja temos uma conexão iniciada ;-)

$mysql_oracle_oque_voce_quiser = Variável que irá especificar para o ADODB, que tipo de banco de dados você pretende usar.


Essa classe tem suporte a vários bancos você pode conferir aqui a lista dos bancos suportados.
Ok, mas como fazer a consulta? Vamos lá:

Já que instanciamos no objeto $db, deveremos usá-lo:

$result = $obj->Execute("SELECT * FROM tabela WHERE campo = 'ALGUMACOISA'");

Certo, mas como eu recupero os resultados do SELECT?

Simples, tá vendo esse tal de $result aí? Ele irá capturar tudo o que for retornado pela consulta:


echo $result->fields['nome_do_campo']; // você poderá retornar tanto pelo nome do campo, quanto pela posição numérica que ele representa no banco ex: 0, 1, 2...


E se eu quiser fazer um loop? Simples:


while (!$result->EOF) {
echo $result->fields['nome_do_campo'];
$result->MoveNext(); // isso moverá o cursor para o próximo registro
}


Viu como é simples? É, leva um tempo pra aprender, mas esse tempo irá ser recompensado quando você precisar migrar de um banco para o outro. Por quê? Basta alterar a variável que especifica o tipo de banco.


Por exemplo, quero usar 'Oracle': $db = ADONewConnection("oci8");

Quero usar MySQL: $db = ADONewConnection("mysql");

E assim vai ;-)

Site do ADODB:
http://adodb.sf.net

4 Response to "Abstração de Banco de Dados em PHP com ADODB"

  1. Maurilio says:

    Realmente para quem já é ou foi programador em Delphi / VB isso facilita as coisas. No entanto, há uma vantagem nos comandos de BD no PHP que é a seguinte: ele incentiva o uso do read-forward que evita que nós, programadores, ao esquecermos de colocar o $db->movenext o loop se torne infinito. queria saber se esse ADODB possui um tratamento igual? Queria lembrar que até o JAVA e o .NET já adotaram esse conceito faz tempo!

    Anônimo says:

    O PDO é mais novo e melhor,mas valeu a dica.

    Micael says:

    Eu utilizava o ADODB, é muito interessante, mas hoje passei a utilizar o MDB2 do PEAR. Muito interessante a forma que ele trabalha.

    Inserts, updates, delete sem fazer SQL, apenas passando um array, é bacana.

    []s

    Boa Micael, vou dar uma estudada nele também. :)