Uma introdução à classe ADODB

Geralmente nos enganamos ao desenvolver uma aplicação sem pensar no futuro. Não é impossível que o banco de dados que você usa hoje torne-se inviável no futuro e você precise reescrever sua aplicação para utilizar outro banco. É justamente aí que usar uma classe bem desenhada para bancos de dados faz toda a diferença.

[ Hits: 77.893 ]

Por: Pedro César em 01/02/2004


Uma introdução à classe ADODB



Como usar ADODB


Geralmente o iniciante (não só o iniciante) engana-se ao desenvolver uma aplicação sem qualquer consideração com o futuro. Não é impossível que o banco de dados que você usa hoje torne-se inviável no futuro e você precise reescrever sua aplicação para utilizar outro banco e as funções do PHP não facilitam sua vida caso isso venha a acontecer (são funções diferentes para cada banco).

Neste caso é necessário percorrer todo o código do projeto alterando as funções e às vezes até mudando a sintaxe das queries, o que não é uma tarefa muito agradável, podendo deixar a aplicação ligada de uma forma errada ao banco, causando instabilidade e perda de performance.

É justamente aí que usar uma classe bem desenhada para bancos de dados faz toda a diferença. Ela permite que você altere o banco de dados com o mínimo de esforço, usando algumas funções que definem a escolha que você faz, mudando apenas um parâmetro que define o banco de dados a utilizar, em ADODB basta mudar a seguinte linha:

$DB=NewADOConnection('access');
para
$DB=NewADOConnection('mysql');

e pronto!! Você já deu o primeiro passo para upgrade.

Já trabalhei com várias classes com a mesma função, mas este artigo irá focar particularmente a que eu mais gosto: ADODB.

ADODB atualmente suporta: MySQL, PostgreSQL, Interbase, Firebid, Informix, Oracle, MS SQL7, FoxPro, Access, ADO, Sybase, Frontbase, DB2 e ODBC genérico. Se seu banco de dados não está aqui você poderá utilizá-lo genericamente, mas tenho certeza que não demorará muito e ele será adicionado.

Instalando o ADODB


Instalar ADODB é extremamente fácil, primeiro tenha certeza que você está usando PHP versão 4.0.4 ou posterior. Se você não está, recomendo um upgrade urgente!

Faça o download da classe em http://weblogs.com#download.

Descompacte o arquivo em um diretório de sua escolha.

Testando sua instalação


Conectar é igualmente fácil. Você pode testar sua instalação com essas 3 linhas de código substituindo os valores das variáveis pelos seus:

include("$adodb_path/adodb.inc.php");
$db=NewADOConnection("seu_banco");
$db -> connect('$host','$user','$pass','$nome_do_banco')

Agora você tem um objeto de conexão ao banco, você também pode usar ADONewConnection no lugar de NewADOConnection, são nomes diferentes para a mesma função.

As variáveis de conexão mudam de acordo com as configurações da instalação e o banco desejado, veja abaixo os valores para bancos:
  • access (Microsoft Access/Jet)
  • ado (ADO genérico, a base para todos os outros drivers ADO)
  • ado_access (Microsoft Access/Jet usando ADO)
  • ado_mssql (Microsoft SQL Server usando ADO)
  • db2 (DB2)
  • vfp (Microsoft Visual FoxPro)
  • fbsql (FrontBase)
  • ibase (Interbase 6 ou posterior)
  • firebird (Firebird)
  • informix72 (Informix depois da versão 7.2)
  • informix (Informix)
  • maxsql (MySQL com suporte a transação)
  • mssql (Microsoft SQL Server 7)
  • mssqlpo (Driver portatil do Mssql)
  • mysql (MySQL sem suporte a transação)
  • mysqlt (MySQL com suporte a transação, idêntico a maxsql)
  • oci8 (Oracle 8/9)
  • oci805 (Oracle 8.0.5)
  • oci8po (Oracle 8/9 portátil)
  • odbc (ODBC genérico, a base para todos os drivers ODBC)
  • odbc_mssql (MSSQL via ODBC)
  • odbc_oracle (Oracle via ODBC)
  • oracle (Oracle 7)
  • postgres (PostgreSQL)
  • postgres64 (PostgreSQL 6.4)
  • postgres7 (PostgreSQL 7, atualmente igual a postgres)
  • sqlanywhere (Sybase SQL Anywhere)
  • sybase (Sybase)
Se você tiver problemas ao conectar, tenha a certeza de que as configurações de PATH estão corretas e que você consegue conectar sem ADODB.

    Próxima página

Páginas do artigo
   1. Uma introdução à classe ADODB
   2. Conectando à sua base através de scripts
   3. Selecionando, alterando e inserindo registros
   4. Cacheando suas queries
   5. Manipulando os resultados
Outros artigos deste autor

Paginação de resultados com a classe ADODB

Utilizando PEAR

Dicas simples para dar mais usabilidades aos formulários

Uma introdução à biblioteca GD

Leitura recomendada

Stored Procedures usando o MySQL e PHP

Abordagem exemplificada à Orientação a Objetos com PHP

Gallery - Álbum de fotos no seu site

PHP com suporte ao MS SQL Server 7

Armazenando datas de uma outra forma

  
Comentários
[1] Comentário enviado por fabio em 01/02/2004 - 02:11h

Muito interessante essa classe, com certeza irei experimentá-la em meu próximo projeto. Parabéns!

[2] Comentário enviado por wilbil em 01/02/2004 - 18:31h

acheu muito interessante!

mas ate hoje nunca vi uma classe qua funcionasse os relacionamentos somente selects simples

ja tentou usar inner join do mysql nestas sua classe????

[3] Comentário enviado por tecdom em 01/02/2004 - 20:25h

Nao, mas farei o teste e postarei o resultado.

Obs: Gostaria de deixar claro para todos uma coisa que nao deixei no artigo, que a classe nao e minha. Apenas traduzi um artigo que encontrei na internet . O original encontra-se em: http://www.databasejournal.com/features/mysql/article.php/2222651.
Farei restante da traducao.

[4] Comentário enviado por oalexandrino em 02/02/2004 - 17:18h

"mas ate hoje nunca vi uma classe qua funcionasse os relacionamentos somente selects simples

ja tentou usar inner join do mysql nestas sua classe???? "

Claro, as queries são executadas nas funções nativas PHP daquele banco, acontece que o user nao tem ciência disso...

Utilizo-a e já testei em MySQL, Access e SQL 2000 e o mesmo codigo funciona perfeitamente...talvez seja a classe mais completa desse estilo...

é realmente IMPRESSIONANTE!

[5] Comentário enviado por oalexandrino em 02/02/2004 - 17:21h

Nota...é sempre bom utilizar
"$db -> SetFetchMode(ADODB_FETCH_ASSOC); //retornar array associativo"

pois em SQL Server por exemplo, o array inteiro nao foi acessado, apenas o associativo.. (SQL SErver 2000)

[6] Comentário enviado por fabio em 09/02/2004 - 14:34h

O link correto para download dessa classe é:
http://php.weblogs.com/adodb#downloads

[7] Comentário enviado por fabio em 23/03/2004 - 17:10h

Bom, lá vai uma dica para o uso dessa classe. No PHP temos a função mysql_insert_id(), que retorna o código do último registro inserido no banco de dados. Precisei fazer isso usando a classe ADODB e descobri que ela possui suporte a esse recurso:

$sql = $db->execute("INSERT INTO table (column1, column2) VALUES ('value1', 'value2')");
if(!$sql){
echo "Error performing query: ".$db->ErrorMsg();
} else {
echo "Query success! The new row has an id of: ".$db->Insert_Id();
}

Encontrei essa informação em:
http://www.phpfreaks.com/tutorials/110/2.php
(ADOdb: Making MySQL Efficient)

O artigo do link acima ainda possui muitas outras dicas sobre recursos do MySQL inclusos nessa classe, vale à pena ler :)

[8] Comentário enviado por rockedsonbr em 11/01/2005 - 14:50h

Boa tarde, cara gostaria de saber mais detalhes sobre a classe do AdoDB... pois aqui no teu artigo, vc diz q o adodb suporta conexão com o interbase. Eu baixei o adodb do souceforge, instalei e fiz um texte o resultado foi que ele não conseguiu achar a classe.

Missing file: c:\arquivos de programas\easyphp1-7\www\adodb/drivers/adodb-interbase.inc.php

ADONewConnection: Unable to load database driver ''

obrigado
Rock


Contribuir com comentário