Ejemplo con Bases de datos ?

Ernesto Hernandez-Novich emhn at telcel.net.ve
Fri Jun 22 07:36:48 CDT 2001


On Thu, 21 Jun 2001, Fragger wrote:
> ¿Cuales serian las cualidades de un programa de manejo de SQL con Perl y no 
> con C/C++? ¿Es mas rapido?¿Facil?.
> 

- Conciso.
- Funciona con cualquier base de datos si te limitas a utilizar SQL
  standard.
- Puedes usar stored procedures/triggers.
- Múltiples conexiones a diferentes bases de datos simultáneamente.
- Te ahorras el manejo de los cursores.
- Usas siempre drivers nativos hacia las bases de datos, y no la lentitud
  y limitación de ODBC.

Hazlo más corto en C++, porque más rápido es difícil... y no necesitas
compilar/enlazas para probar. De paso, en Perl lo podemos hacer más
corto todavía ;-)

"El usuario debe indicar el código numérico del cliente a buscar. El
código 0 indica terminar el programa. Un código no numérico debe ser
ignorado. Mostrar codigo, nombre y dirección del cliente. Un cliente
puede tener varias direcciones asociadas al mismo código."

#!/usr/bin/perl -w

use DBI;

my $db = DBI->connect("dbi:Pg:dbname=clientes","usuario","password");
my $query = $db->prepare( q{ select code,name,addres
                             from clients where code = ? } );
while ($code = <>) {
  chomp $code ;
  last unless $code;
  next unless $code =~ /^\d+$/;
  $query->execute($code);
  while (($c,$n,$d) = $query->fetchrow_array) {
    print "Codigo: $c Nombre: $n Direccion: $d\";
  }
}
$query->finish;
$db->disconnect;

El código no tiene recuperación en caso de errores, pero se haría con
manejo de excepciones como en C++, así que la complejidad es comparable.
Y para los perl mongers está claro que no hace falta ni siquiera usar las
variables $code, $c, $n, ni $d... pero es un ejemplo "introductorio".

Digamos que tengo la misma base de datos en Oracle, entonces cambio "Pg"
por "Oracle" y _listo_. ¿Era MySQL, entonces pongo "mysql"? ¿No tienes
una base de datos relacional? DBI la puede simular con archivos DBM y/o
de _texto_.

Busca el módulo DBI y el DBD apropiado para tu(s) base(s) de datos en
uso; todo está en www.perl.com en el CPAN.
-- 
Ernesto Hernández-Novich - Running Linux 2.4.5 i686 - Unix: Live free or die!
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/E d+(++) s+: a C+++$ UBLAVHIOSC*++++$ P++++$ L+++$ E- W+ N++ o K++ w--- O-
M- V PS+ PE Y+ PGP>++ t+ 5 X+ R* tv+ b++ DI+++$ D++ G++ e++ h r++ y+
-----END GEEK CODE BLOCK-----

------------------------------------------------------------------------
Enviar e-mail a <majordomo at pm.org> colocando en el cuerpo:
"UNSUBSCRIBE caracas-pm-list" para desuscribirse.
"INFO caracas-pm-list" para conocer las reglas de etiqueta.
------------------------------------------------------------------------



More information about the caracas-pm mailing list