Perl: módulo DBI (independiente de la base de datos) | Juego – 2

Perl permite el manejo de Bases de Datos con la ayuda de Perl Scripts. Estos scripts se ejecutan con la ayuda de un módulo conocido como módulo DBI (interfaz independiente de base de datos) . El módulo DBI proporciona una API para interactuar con muchas bases de datos como MySQL, Oracle, etc. Este módulo proporciona un conjunto de variables y métodos que brindan interacción con una interfaz de base de datos y no necesitan acceder a la base de datos original.

Crear una tabla

Para crear una tabla en Perl, primero tenemos que crear una base de datos en SQL. Para hacerlo, ejecutaremos la siguiente declaración en el indicador SQL:

CREATE DATABASE EMP_DB;

Ahora, se creará una base de datos con el nombre EMP_DB . Usaremos esta base de datos para almacenar registros de empleados en nuestra base de datos.

Ahora, nos conectaremos a esta base de datos usando el siguiente comando:

my $dbh = DBI->connect("dbi:$driver:$dsn", $username, $passwd, { AutoCommit => 1 })

Ahora, se establecerá nuestra conexión con la base de datos y usaremos la siguiente declaración para crear una tabla, EMP_DEATAILS, para guardar el registro de los detalles de los empleados.  

my $sth = $dbh->prepare(“CREATE TABLE EMP_DETAILS (ID INT PRIMARY KEY, EMP_NAME VARCHAR(50), AGE INT, SALARY INT)”);
$algo->ejecutar();

El programa completo de referencia se proporciona a continuación:

#!/usr/bin/perl -w
use strict;
use DBI;
my $driver = "mysql";
my $dsn = "database=EMP_DB";
my $username = "root";
my $passwd = "";
my $dbh = DBI->connect("dbi:$driver:$dsn", 
               $username, $passwd,
               { AutoCommit => 1 }) or 
               die "Failed to connect to database : $DBI::errstr";
my $sth = $dbh->prepare("CREATE TABLE EMP_DETAILS ( 
                           ID INT PRIMARY KEY, 
                           EMP_NAME VARCHAR(50),
                           AGE INT, SALARY INT)");
  
$sth->execute();

Producción:

Create1

Inserción en la base de datos

Ahora que hemos creado la tabla EMP_DETAILS en la base de datos EMP_DB, insertemos algunos valores en la tabla usando las siguientes declaraciones:

#$dbh->do("INSERT INTO EMP_DETAILS (ID, EMP_NAME, AGE, SALARY)  
VALUES (71, 'CHINMAY', 23, 10000)")  
or die "Failed to insert :  $DBI::errstr";
  
#$dbh->do("INSERT INTO EMP_DETAILS (ID, EMP_NAME, AGE, SALARY)  
VALUES (73, 'SANSKRUTI', 23, 15000)")  
or die "Failed to insert :  $DBI::errstr";
  
$dbh->do("INSERT INTO EMP_DETAILS (ID, EMP_NAME, AGE, SALARY)  
VALUES (150, 'DEREK', 37, 20000)")  
or die "Failed to insert :  $DBI::errstr";
  
$dbh->do("INSERT INTO EMP_DETAILS (ID, EMP_NAME, AGE, SALARY)  
VALUES (200, 'ROSS', 30, 24250)")  
or die "Failed to insert :  $DBI::errstr";

Producción:

Insert1

Inserción de valores de enlace

Considere el programa dado a continuación. En el programa, hemos utilizado signos de interrogación (?) en algunos lugares. Estos signos de interrogación se conocen como marcadores de posición . Mediante el uso de marcadores de posición, el controlador de la base de datos puede preprocesar la consulta antes de ejecutarla en el símbolo del sistema SQL. Este proceso se conoce como enlace de datos . El enlace nos ayuda a aumentar la seguridad del código, lo que ayuda a prevenir ataques de inyección SQL. 

#!/usr/bin/perl -w
use strict;
use DBI;
my $driver = "mysql";
my $dsn = "database=EMP_DB";
my $username = "root";
my $passwd = "";
my $dbh = DBI->connect("dbi:$driver:$dsn", 
               $username, $passwd, 
               { AutoCommit => 1 }) or 
               die "Failed to connect to database : $DBI::errstr";
   
# Inserting Bind Values
print "Enter Employee ID - ";
my $id = <>;
chomp($id);
   
print "Enter Employee Name - ";
my $name = <>;
chomp($name);
   
print "Enter Employee Age - ";
my $age = <>;
chomp($age);
   
print "Enter Employee Salary - ";
my $salary = <>;
chomp($salary);
   
my $sth = $dbh->prepare("INSERT INTO EMP_DETAILS (
                            ID, EMP_NAME, AGE, SALARY)
                            VALUES (?, ?, ?, ?)");
                              
$sth->execute($id, $name, $age, $salary) or 
      die "Failed to insert : $DBI::errstr";

Producción:


Bind2

Lectura de valores de la base de datos

Nuestra base de datos ahora está poblada con algunos valores. Ahora tenemos que volver a leerlos al usuario. Para hacerlo, usaremos el bucle while para volver a leer los datos al usuario.

#!/usr/bin/perl -w
use strict;
use DBI;
my $driver = "mysql";
my $dsn = "database=EMP_DB";
my $username = "root";
my $passwd = "";
my $dbh = DBI->connect("dbi:$driver:$dsn", 
               $username, $passwd, 
               { AutoCommit => 1 }) or 
               die "Failed to connect to database : $DBI::errstr";
   
my $sth = $dbh->prepare("SELECT EMP_NAME, ID FROM EMP_DETAILS WHERE ID<100");
   
$sth->execute() or die "Failed to select rows : $DBI::errstr";
   
my $rows = $sth->rows;
print "Number of rows updated : $rows \n";
   
while (my @emp_data = $sth->fetchrow_array()) 
{
    my ($name, $id ) = @emp_data;
    print "Employee Name = $name, Employee ID = $id \n";
}
$sth->finish();

Producción:

Reading2pref

Actualización de los valores de la base de datos

Para actualizar cualquier valor de la tabla, podemos usar el comando SQL UPDATE de la siguiente manera:

#!/usr/bin/perl -w
use strict;
use DBI;
my $driver = "mysql";
my $dsn = "database=EMP_DB";
my $username = "root";
my $passwd = "";
my $dbh = DBI->connect("dbi:$driver:$dsn", 
               $username, $passwd, 
               { AutoCommit => 1 }) or 
               die "Failed to connect to database : $DBI::errstr";
   
$dbh->do("UPDATE EMP_DETAILS SET ID=250 WHERE ID=150")
      or die "Failed to update : $DBI::errstr";

Producción:

Tabla original:
enlazar2

Tabla después de la actualización de datos:
Actualizar1

Eliminación de valores de la base de datos

Para eliminar una fila en particular de la tabla, podemos usar la instrucción SQL DELETE de la siguiente manera:

#!/usr/bin/perl -w
use strict;
use DBI;
my $driver = "mysql";
my $dsn = "database=EMP_DB";
my $username = "root";
my $passwd = "";
my $dbh = DBI->connect("dbi:$driver:$dsn", 
            $username, $passwd, { AutoCommit => 1 }) or 
            die "Failed to connect to database : $DBI::errstr";
  
$dbh->do("DELETE FROM EMP_DETAILS WHERE ID=250") or 
     die "Failed to delete : $DBI::errstr";
   
$dbh->do("DELETE FROM EMP_DETAILS WHERE EMP_NAME='ROSS'") or 
     die "Failed to delete : $DBI::errstr";

Producción:

Delete1

Publicación traducida automáticamente

Artículo escrito por chinmay_bhide y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *