Twitter Flickr Pinterest LinkedIn YouTube Google Maps E-mail RSS
formats

Ejemplo sencillo, aplicación OOP en PERL que implementa un motor de acceso a datos distribuido en MYSQL

Para realizar el ejemplo es necesario el empleo de 2 ficheros.

1- Ejemplo.pl
2- MotorSGBD.pm

Veamos el código en el siguiente POST.

 


Fichero Ejemplo.pl

#!/usr/bin/perl
# EXPLICACION:
# Intentare crear un motor sencillo de acceso a una base de datos del gestor MYSQL mediante 
# consultas SELECT, INSERT y DELETE.
# Para ello empleare modulos CPAN para el acceso a la base de datos.
# De esta manera demuestro el acceso distribuido a una base de datos MYSQL
 
# IMPORTANTISIMO:
# Necesario descargarse 
# Modulo DBD::mSQL / DBD::mysql - mSQL and mysql drivers for the Perl5 Database
# http://www.cpan.org/modules/01modules.index.html el , Msql-Mysql-modules-1.2219.tar.gz
# He probado con dbi:ODBC:Host, pero es necesario crear un DSN local en el sistema 
# para conectar por ODBC. Por lo que el objeto no tiene sentido.
# Me temo que con activeperl para windows, ejecutando el ppm 
# no encuentra el modulo para mysql
 
# Estructura de tabla: usuario:  id (int), nombre (varchar), apellido1(varchar), edad (int)
# Creada para propositos del ejemplo, sobre un servidor mio,
# cambiar datos del servidor por uno vuestro.
 
use MotorSGBD;
system("cls");
 
#Datos de la conexión 
 
$host="la IP";
$puerto="3306";
$db="ejemplo";
$usuario="demo";
$password="oscar";
 
$base= MotorSGBD->new();
 
$base->Inicializar ($host,$puerto,$db,$usuario,$password);
 
$base->Conectar;
#No se realmente tu edad. Sugongamos 30
$base->Insertar_Datos("2","Oscar","de la Cuesta", "30");
 
#Consulta datos almacenados inicialmente en la base, id 1
$base->Consultar_Datos("1");
 
#Borra los datos del ID 2 insertado arriba.
$base->Borrar_Datos("2");
 
$base->Cerrar;

Ahora el contenido del segundo fichero. MotorSGBD.pm

package MotorSGBD;
 
#Uso de librerias de CPAN, necesitan estar instaladas comprobado con pmp
use DBI;
# Necesario descargarse 
   # Modulo DBD::mSQL / DBD::mysql - mSQL and mysql drivers for the Perl5 Database
   #http://www.cpan.org/modules/01modules.index.html el Msql-Mysql-modules-1.2219.tar.gz
 
#Programamos el constructor de la clase
sub new{
 
  my $this=shift; #Cogemos la clase que somos o una referencia a la clase (si soy un objeto)
  my $class = ref($this) || $this; #Averiguo la clase a la que pertenezco
  my $self={}; #Inicializamos la tabla hash que contendrá las var. de instancia 
 
  $self ->{HOST}="";
  $self ->{PUERTO}="";
  $self ->{BASE} = "";
  $self ->{USUARIO} = "";
  $self ->{PASSWORD}="";
  bless $self, $class; #Perl nos tiene que dar el visto bueno (bendecirla)
  return ($self); #Devolvemos la clase recién construida
 
}
 
#Inicializa los campos del objeto con los valores pasados.
sub Inicializar 
{
$self ->{HOST}=$_[1];
$self ->{PUERTO}=$_[2];
$self ->{BASE}=$_[3];
$self ->{USUARIO}=$_[4];
$self ->{PASSWORD}=$_[5];
}
 
sub Conectar
{
# Realizamos la conexión a la base de datos 
system("cls");
print "Intentando conectar don DBI->MYSQL ..., si no contecta, condigurar un ODBC \n";
 
$dbh = DBI->connect('dbi:mysql:'.$self ->{HOST},$self ->{USUARIO},$self->{PASSWORD}) or die "Error de conexion: $DBI::errstr\n";
#He probado con dbi:ODBC:Host, pero es necesario crear un DSN local en el sistema para conectar por ODBC. 
#Por lo que el objeto no tiene sentido.
}
 
sub Consultar_Datos
{
$id =$_[1];
$consulta = "SELECT * FROM usuarios where id= ". $id;
$sth = $dbh->prepare($consulta);
print $consulta;
$sth->execute();
# Recorremos los resultados obtenidos de la base de datos 
	while($sth->fetch()) {
	print "$nombre - $apellido1";
	}
 
}
 
sub Insertar_Datos
{
$id =$_[1];
$nombre =$_[2];
$apellido1 =$_[3];
$edad =$_[4];
$consulta = "insert into usuarios values = ( ". $id. ",'" .$nombre."','".$apellido1."',". $edad. ");"; 
$sth = $dbh->prepare($consulta);
$sth->execute();
 
}
 
sub Borrar_Datos
{
$id =$_[1];
 
$consulta = "delete from usuarios where id = ". $id;
$sth = $dbh->prepare($consulta);
$sth->execute();
}
 
sub Cerrar
{
$dbh->disconnect;
}
 
 sub DESTROY {
        my $self=shift; #El primer parámetro de un metodo es la  clase
        delete ($self->{BASE});
		delete ($self ->{PUERTO});
		delete ($self->{USUARIO});
		delete ($self->{PASSWORD});
		delete ($self->{HOST});			
        }
 
  #Fin
1;

 

Sobre Perl

Perl tiene muchas y variadas aplicaciones, gracias a la disponibilidad de muchos módulos estándares y de terceras partes.

Se ha usado desde los primeros días del Web para escribir guiones (scripts) CGI. Es una de las «tres Pes» (Perl, Python y PHP), que son los lenguajes más populares para la creación de aplicaciones Web, y es un componente integral de la popular solución LAMP para el desarrollo web.

Grandes proyectos escritos en Perl son Slash, IMDb6 y UseModWiki, un motor de Wiki.

Muchos sitios web con alto tráfico, como Amazon.com y Ticketmaster.com usan Perl extensamente.
Perl se usa a menudo como un «lenguaje pegamento», ligando sistemas e interfaces que no fueron diseñados específicamente para interoperar; y para el «escarbado de datos», convirtiendo o procesando grandes cantidades de datos para tareas como por ejemplo crear informes.

De hecho, estas fortalezas están íntimamente unidas. Su combinación hace a Perl una popular herramienta de propósito general para los administradores de sistemas, especialmente en programas pequeños que pueden ser escritos y ejecutados en una sola línea de comandos.

Perl es también ampliamente usado en finanzas y bioinformática, donde es apreciado por su desarrollo rápido, tanto de aplicaciones como de despliegue, así como la habilidad de manejar grandes volúmenes de datos.


Usted debe ser Registrado para publicar un cometario

Home Bases de datos Ejemplo sencillo, aplicación OOP en PERL que implementa un motor de acceso a datos distribuido en MYSQL
© www.palentino.es, desde el 2012 - Un Blog para compartir conocimientos ...

Uso de cookies en mi sitio palentino.es

Este sitio web utiliza cookies para que tengamos la mejor experiencia de usuario. Si continúas navegando estás dando tu consentimiento para la aceptación de las mencionadas cookies y la aceptación de la política de cookies

ACEPTAR
Aviso de cookies