DBI es el módulo de interfaz de base de datos estándar de Perl. Se define un conjunto de métodos, variables y convenciones que proporcionan una interfaz de base de datos consistente independiente de la base de datos real que se utiliza. Para este caso utilizaremos una base de datos Mysql, veremos como establecer una conexión a una base de datos y ejecutar consultas mediante los métodos que proporciona el Módulo DBI ...
Primeramente veremos como establecer la conexión y crear una tabla si no existe, esta tabla se llamará 'usuarios', la cual nos servirá para trabajar con el resto de ejemplos.
crear-tabla.pl
#crear-tabla.pl #Crear tabla use DBI; use strict; my $admin = "root"; my $password = "password"; my $base_de_datos = "base_de_datos"; my $servidor = "localhost"; #Se establece la conexión a la base de datos mysql my $mysql = DBI -> connect("DBI:mysql:$base_de_datos;host=$servidor", $admin, $password) || die "Error al conectar con la base de datos: $DBI::errstr"; #Creamos una tabla llamada usuarios si no existe my $consulta = $mysql->prepare("CREATE TABLE IF NOT EXISTS usuarios (id INT(11) PRIMARY KEY AUTO_INCREMENT, nombre VARCHAR(100), email VARCHAR(100))") || die "Error al crear la tabla: $DBI::errstr"; #Ejecuta la consulta my $resultado = $consulta->execute(); if ($resultado) { print "\n\n Consulta llevada a cabo correctamente \n\n"; } #Se cierra la conexión $consulta->finish; $mysql->disconnect;
Bien, ya tenemos una tabla en la que poder realizar consultas, el siguiente ejemplo muestra como insertar nuevos campos a través de la consola en la recien creada tabla 'usuarios'.
insertar-datos.pl
#insertar-datos.pl #Insertar Datos use DBI; use strict; print "\n\n****INSERTAR DATOS EN LA TABLA USUARIOS****\n\n"; #Para la entrada de datos print "Introduce el nombre a guardar ... "; my $nombre = <STDIN>; print "Introduce el email a guardar ... "; my $email = <STDIN>; my $admin = "root"; my $password = "password"; my $base_de_datos = "base_de_datos"; my $servidor = "localhost"; #Se establece la conexión a la base de datos mysql my $mysql = DBI -> connect("DBI:mysql:$base_de_datos;host=$servidor", $admin, $password) || die "Error al conectar con la base de datos: $DBI::errstr"; #Preparamos la consulta para insertar datos my $consulta = $mysql->prepare("INSERT INTO usuarios(nombre, email) VALUES('$nombre', '$email')") || die "Error al insertar los datos: $DBI::errstr"; #Ejecuta la consulta my $resultado = $consulta->execute(); if ($resultado) { print "\n\n Consulta llevada a cabo correctamente \n\n"; } #Se cierra la conexión $consulta->finish; $mysql->disconnect;
Puedes insertar varios usuarios esto te servirá para el ejemplo siguiente, en el cual extraeremos todos los usuarios almacenados en la tabla ...
seleccionar-datos.pl
#seleccionar-datos.pl #Seleccionar Datos use DBI; use strict; print "\n\n****TODOS LOS USUARIOS DE LA TABLA****\n\n"; my $admin = "root"; my $password = "password"; my $base_de_datos = "base_de_datos"; my $servidor = "localhost"; #Se establece la conexión a la base de datos mysql my $mysql = DBI -> connect("DBI:mysql:$base_de_datos;host=$servidor", $admin, $password) || die "Error al conectar con la base de datos: $DBI::errstr"; #Preparamos la consulta para seleccionar datos my $consulta = $mysql->prepare("SELECT * FROM usuarios") || die "Error al seleccionar datos: $DBI::errstr"; #Se ejecuta la consulta my $resultado = $consulta->execute(); #Se extraen los datos my $fila; while($fila = $consulta->fetchrow_hashref()) { #Cada valor devuelto por el Array se almacena en una variable my $nombre = $fila->{nombre}; my $email = $fila->{email}; my $id = $fila->{id}; #Esta parte es para eliminar posibles saltos de línea $nombre =~ s/\n//g; $email =~ s/\n//g; $id =~ s/\n//g; #Se imprime cada fila print "Id:" . $id . " --- " . "Nombre:". $nombre . " --- " . "Email:" . $email . "\n"; } #Se cierra la conexión $consulta->finish; $mysql->disconnect;
Ahora veremos como actualizar una determinada fila a través de la consola de comandos ...
Actualizar Datos
#actualizar-datos.pl #Actualizar Datos use DBI; use strict; print "\n\n****PROGRAMA PARA ACTUALIZAR DATOS DE LA TABLA****\n\n"; my $admin = "root"; my $password = "password"; my $base_de_datos = "base_de_datos"; my $servidor = "localhost"; #Se establece la conexión a la base de datos mysql my $mysql = DBI -> connect("DBI:mysql:$base_de_datos;host=$servidor", $admin, $password) || die "Error al conectar con la base de datos: $DBI::errstr"; #Preparamos la consulta para seleccionar datos y tener una vista previa my $consulta = $mysql->prepare("SELECT * FROM usuarios") || die "Error al seleccionar datos: $DBI::errstr"; #Se ejecuta la consulta my $resultado = $consulta->execute(); #Se extraen los datos my $fila; while($fila = $consulta->fetchrow_hashref()) { #Cada valor devuelto por el Array se almacena en una variable my $nombre = $fila->{nombre}; my $email = $fila->{email}; my $id = $fila->{id}; #Esta parte es para eliminar posibles saltos de línea $nombre =~ s/\n//g; $email =~ s/\n//g; $id =~ s/\n//g; #Se imprime cada fila print "Id:" . $id . " --- " . "Nombre:". $nombre . " --- " . "Email:" . $email . "\n"; } # Ahora preparamos los datos de entrada print "Indique el numero id de la fila que desea actualizar:"; my $id = <STDIN>; print "Nuevo valor del campo nombre: "; my $nombre = <STDIN>; print "Nuevo valor del campo email: "; my $email = <STDIN>; #Preparamos la consulta para actualizar datos my $consulta = $mysql->prepare("UPDATE usuarios SET nombre='$nombre', email='$email' WHERE id=$id") || die "Error al seleccionar datos: $DBI::errstr"; $resultado = $consulta -> execute(); if ($resultado) { print "\n\n Actualizacion correcta \n\n"; } #Se cierra la conexión $consulta->finish; $mysql->disconnect;
Y finalmente veremos un ejemplo para eliminar filas de la tabla a través de la entrada de datos ...
eliminar-datos.pl
#eliminar-datos.pl #Eliminar Datos use DBI; use strict; print "\n\n****PROGRAMA PARA ELIMINAR DATOS DE LA TABLA****\n\n"; my $admin = "root"; my $password = "password"; my $base_de_datos = "base_de_datos"; my $servidor = "localhost"; #Se establece la conexión a la base de datos mysql my $mysql = DBI -> connect("DBI:mysql:$base_de_datos;host=$servidor", $admin, $password) || die "Error al conectar con la base de datos: $DBI::errstr"; #Preparamos la consulta para seleccionar datos y tener una vista previa my $consulta = $mysql->prepare("SELECT * FROM usuarios") || die "Error al seleccionar datos: $DBI::errstr"; #Se ejecuta la consulta my $resultado = $consulta->execute(); #Se extraen los datos my $fila; while($fila = $consulta->fetchrow_hashref()) { #Cada valor devuelto por el Array se almacena en una variable my $nombre = $fila->{nombre}; my $email = $fila->{email}; my $id = $fila->{id}; #Esta parte es para eliminar posibles saltos de línea $nombre =~ s/\n//g; $email =~ s/\n//g; $id =~ s/\n//g; #Se imprime cada fila print "Id:" . $id . " --- " . "Nombre:". $nombre . " --- " . "Email:" . $email . "\n"; } # Ahora preparamos los datos de entrada print "Indique el numero id de la fila que desea eliminar:"; my $id = <STDIN>; #Preparamos la consulta para eliminar la fila my $consulta = $mysql->prepare("DELETE FROM usuarios WHERE id=$id") || die "Error al eliminar la fila: $DBI::errstr"; $resultado = $consulta -> execute(); if ($resultado) { print "\n\n Eliminacion correcta \n\n"; } #Se cierra la conexión $consulta->finish; $mysql->disconnect;
No hay comentarios:
Publicar un comentario