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: 78.258 ]

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

Dicas simples para dar mais usabilidades aos formulários

Utilizando PEAR

Paginação de resultados com a classe ADODB

Uma introdução à biblioteca GD

Leitura recomendada

Paginando resultados com a classe Generic Easy Pagination

Executando comandos DML em base de dados MySQL através do Eclipse PHP (Bônus: Temas e Fontes no Eclipse)

Gallery - Álbum de fotos no seu site

Configurando Apache + MySQL + Manipulação de dados com PHP

Oracle 9i, Apache e PHP

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts