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

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


Conectando à sua base através de scripts



Antes de você sair correndo para alterar as linhas de seu código, é preciso dar um passo para trás, ao ponto da biblioteca que faz sua aplicação flexível e portável. Alguns iniciantes se enganam em relação aos parâmetros de conexão (PATH) e automaticamente enfraquecem a aplicação, se sua senha mudar, precisará fazer alteração em cada um dos scripts, se também sua senha estiver na árvore WEB, enfraquece sua aplicação no caso de falhas no servidor.

Deve-se colocar informações de senha em arquivo separado do resto dos arquivos ADODB. O mesmo se aplica aos valores do PATH, se você transferir sua aplicação para outro servidor, você pode não ter a garantia que a estrutura será a mesma. Por isso já vale à pena guardá-los em um lugar separado também.

Sugiro criar um arquivo com as configurações do servidor WEB para ser chamado no script PHP cada vez que este for executado. Exemplo:

include("$adodb_path/db_values.inc.php");
include("$adodb_path/adodb.inc.php");
$db=NewADOConnection("$database_type");
$db -> Connect ('$host','$user','$pass','nome_banco');

O nome do banco seria diferente em muitos de seus scripts, por isso pode permanecer o nome mesmo. Você pode querer também que estas conexões sejam persistentes ao invés de criar uma nova a cada execução e melhorar a velocidade em muitas aplicações WEB, mas essa eficácia deve ser diferente entre os vários bancos, para isso substitua "Connect" por "Pconnect".

O arquivo db_values.inc.php conteria o seguinte:

<?
$database_type="mysql";
$host="localhost";
$user="usuário";
$pass="deixe_me_entrar"; ?>

Os valores de $adodb_path, podem ser incluídos em um arquivo pré-adicionado. Você pode pode configurar seu PHP para automaticamente adicionar um arquivo em php.ini, como no exemplo seguinte:

; Automatically add files before or after any PHP Document. auto_prepen_file=/usr/local/build/apache/www/tool_lib/defaults.inc auto_append_file=

O arquivo default.inc deve conter o valor de $adodb_path, por exemplo:

<?
$adodb_path="/usr/local/build/apache/www/tool_lib/";
?>

Existem outros caminhos a seguir práticos quando for migrar.

Página anterior     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

Utilizando PEAR

Uma introdução à biblioteca GD

Dicas simples para dar mais usabilidades aos formulários

Paginação de resultados com a classe ADODB

Leitura recomendada

Como criar um sistema de autenticação de usuários usando PHP/MySQL

Abordagem exemplificada à Orientação a Objetos com PHP

Stored Procedures usando o MySQL e PHP

PHP com suporte ao MS SQL Server 7

Criando um contador de downloads com PHP e MySQL

  
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