English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Perl SQLite

Installation

SQLite3 Il est possible d'intégrer le module Perl DBI avec Perl. Le module Perl DBI est un module d'accès aux bases de données du langage de programmation Perl. Il définit un ensemble de méthodes, de variables et de règles fournissant une interface standard aux bases de données.

Voici affiché dans Linux/Voici les étapes simples pour installer le module DBI sur un ordinateur UNIX :

$ wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.625.tar.gz
$ tar xvfz DBI-1.625.tar.gz
$ cd DBI-1.625
$ perl Makefile.PL
$ make
$ make install

Si vous avez besoin d'installer le pilote SQLite pour DBI, vous pouvez suivre les étapes suivantes pour l'installation :

$ wget http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/DBD-SQLite-1.11.tar.gz
$ tar xvfz DBD-SQLite-1.11.tar.gz
$ cd DBD-SQLite-1.11
$ perl Makefile.PL
$ make
$ make install

API DBI

Voici des programmes DBI importants, qui peuvent répondre à vos besoins en bases de données SQLite dans les programmes Perl. Si vous avez besoin de plus de détails, veuillez consulter la documentation officielle Perl DBI.

Numéro de sérieAPI & Description
1DBI->connect($data_source, "", "", \%attr)

Établir une connexion ou une session à la base de données demandée $data_source. Si la connexion est réussie, elle renvoie un objet de traitement de base de données.

La forme de la source de données est indiquée ci-dessous:DBI:SQLite:dbname='test.db'. Dans ce cas, SQLite est le nom du pilote SQLite, test.db est le nom du fichier de base de données SQLite. Si le nom de fichier filename est assigné à ':memory:'alors il créera une base de données en mémoire dans RAM, qui ne durera que pendant la durée de la session.

Si le nom de fichier filename est le nom réel du fichier de périphérique, alors il essaiera d'ouvrir le fichier de base de données en utilisant cette valeur de paramètre. Si le fichier nommé

Vous pouvez garder les deuxièmes et troisièmes paramètres vides, et le dernier paramètre est utilisé pour transmettre divers attributs, voir l'exemple ci-dessous pour plus de détails.

2$dbh->do($sql)

Cette routine prépare et exécute une simple requête SQL. Elle renvoie le nombre de lignes affectées, ou undef en cas d'erreur. La valeur de retour -1 Cela signifie que le nombre de lignes est inconnu, non applicable ou indisponible. Ici, $dbh est fourni par DBI->connect() renvoie le traitement appelé.

3$dbh->prepare($sql)

Cette routine prépare une requête pour l'exécution ultérieure du moteur de base de données et renvoie un objet de traitement de requête.

4$sth->execute()

Cette routine effectue tout traitement nécessaire pour l'exécution d'une requête préparée. Si une erreur se produit, elle renvoie undef. Si elle s'exécute avec succès, elle renvoie toujours true, indépendamment du nombre de lignes affectées. Ici, $sth est fourni par $dbh->prepare($sql) renvoie un traitement de la requête appelée.

5$sth->fetchrow_array()

Cette routine récupère la prochaine ligne de données et la renvoie sous forme de liste contenant les valeurs des champs. Les champs Null sont renvoyés sous forme de valeur undef dans cette liste.

6$DBI::err

Cela équivaut à $h->err. Dans ce cas, $h est tout type de traitement, par exemple $dbh, $sth ou $drh. Ce programme renvoie le code d'erreur du moteur de base de données de la dernière méthode du pilote appelée.

7$DBI::errstr

Cela équivaut à $h->errstr. Dans ce cas, $h est tout type de traitement, par exemple $dbh, $sth ou $drh. Ce programme renvoie le message d'erreur du moteur de base de données de la dernière méthode DBI appelée.

8$dbh->disconnect()

该例程关闭之前调用 DBI-Cette routine ferme la connexion à la base de données avant d'appeler DBI

>connect() ouvre la connexion à la base de données.

Connection à la base de données

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite"; 
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) 
                      or die $DBI::errstr;
print "Base de données ouverte avec succès\n";

Le segment de code Perl suivant montre comment se connecter à une base de données existante. Si la base de données n'existe pas, elle sera créée et un objet de base de données sera renvoyé en fin de processus. Lors de l'exécution du programme ci-dessus, il créera un fichierMaintenant, exécutons le programme ci-dessus pour créer notre base de données dans le répertoire actuel

Vous pouvez modifier le chemin selon vos besoins. Enregistrez le code ci-dessus dans le fichier sqlite.pl et exécutez-le comme suit. Si la base de données est créée avec succès, un message suivant sera affiché : +$ chmod
x sqlite.pl/$ .
sqlite.pl

Ouverture de la base de données réussie

Création de la table

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
                      or die $DBI::errstr;
print "Base de données ouverte avec succès\n";
Le segment de code Perl suivant sera utilisé pour créer une table dans la base de données créée précédemment :
      my $stmt = qq(CREATE TABLE COMPANY
       (ID INT PRIMARY KEY NOT NULL,
       NAME TEXT NOT NULL,
       AGE INT NOT NULL,5ADDRESS CHAR(
       0),
my $rv = $dbh-SALARY REAL););
if($rv < 0){
   print $DBI::errstr;
>do($stmt);
   Sinon {
}
$dbh->disconnect();

Imprimez "Table créée avec succès\n"; Lors de l'exécution du programme ci-dessus, il créera un fichier test.db

Base de données ouverte avec succès
Créez la table COMPANY dans le fichier et affichez le message suivant :

Table créée avec succèsAttention :

Si vous rencontrez l'erreur suivante lors de toute opération : en cas de visualisation de l'erreur suivante dans l'une des opérations :21Échec de l'exécution de st execute::DBD::SQLite : ce n'est pas une erreur ( 398

) à la ligne dbdimp.c-Dans ce cas, vous avez déjà le fichier dbdimp.c dans DBD sqlite3_prepare() Le fichier dbdimp.c disponible dans l'installation de SQLite a été ouvert, trouvez -1Enfin, utilisez la fonction et changez le troisième paramètre 0 en make et make install Installer DBD::SQLite résoudra le problème. Dans ce cas, vous devrez ouvrir le fichier dbdimp.c disponible dans DBD-Installation de SQLite et recherche sqlite3_prepare() function and change its third argument to -1 instead of 0. Finally install DBD::SQLite using make and do make install to resolve the problem.

INSERT operation

The following Perl program shows how to create records in the COMPANY table that was previously created:

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
                      or die $DBI::errstr;
print "Base de données ouverte avec succès\n";
my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (1, 'Paul', 32, 'California', 20000.00 ));
my $rv = $dbh->do($stmt) or die $DBI::errstr;
my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 ));
$rv = $dbh->do($stmt) or die $DBI::errstr;
my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 ));
$rv = $dbh->do($stmt) or die $DBI::errstr;
my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 ));
$rv = $dbh->do($stmt) or die $DBI::errstr;
print "Records created successfully\n";
$dbh->disconnect();

When the above program is executed, it will create the given record in the COMPANY table and display the following two lines:

Base de données ouverte avec succès
Records created successfully

SELECT operation

The following Perl program shows how to retrieve and display records from the COMPANY table that was previously created:

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
                      or die $DBI::errstr;
print "Base de données ouverte avec succès\n";
my $stmt = qq(SELECT id, name, address, salary  from COMPANY;);
my $sth = $dbh->prepare( $stmt );
my $rv = $sth->execute() or die $DBI::errstr;
if($rv < 0){
   print $DBI::errstr;
}
while(my @row = $sth->fetchrow_array()) {
      print "ID = ". $row[0] . "\n";
      print "NAME = ". $row[1] ."\n";
      print "ADDRESS = ". $row[2] ."\n";
      print "SALARY = ". $row[3] ."\n\n";
}
print "Opération effectuée avec succès\n";
$dbh->disconnect();

Lorsque ce programme est exécuté, il génère les résultats suivants :

Base de données ouverte avec succès
ID = 1
NAME = Paul
ADDRESS = California
SALARY =  20000
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY =  15000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY =  20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY =  65000
Opération effectuée avec succès

UPDATE operation

The following Perl code shows how to use the UPDATE statement to update any record and then retrieve and display the updated record from the COMPANY table:

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
                      or die $DBI::errstr;
print "Base de données ouverte avec succès\n";
my $stmt = qq(UPDATE COMPANY set SALARY = 25000.00 where ID=1;);
my $rv = $dbh->do($stmt) or die $DBI::errstr;
if( $rv < 0 ){
   print $DBI::errstr;
}else{
   print "Total number of rows updated : $rv\n";
}
$stmt = qq(SELECT id, name, address, salary  from COMPANY;);
my $sth = $dbh->prepare( $stmt );
$rv = $sth->execute() or die $DBI::errstr;
if($rv < 0){
   print $DBI::errstr;
}
while(my @row = $sth->fetchrow_array()) {
      print "ID = ". $row[0] . "\n";
      print "NAME = ". $row[1] ."\n";
      print "ADDRESS = ". $row[2] ."\n";
      print "SALARY = ". $row[3] ."\n\n";
}
print "Opération effectuée avec succès\n";
$dbh->disconnect();

Lorsque ce programme est exécuté, il génère les résultats suivants :

Base de données ouverte avec succès
Total number of rows updated : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY =  25000
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY =  15000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY =  20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY =  65000
Opération effectuée avec succès

Opération DELETE

Le code Perl suivant montre comment utiliser une instruction DELETE pour supprimer n'importe quel enregistrement, puis obtenir et afficher les enregistrements restants de la table COMPANY :

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
                      or die $DBI::errstr;
print "Base de données ouverte avec succès\n";
my $stmt = qq(DELETE from COMPANY where ID=2;);
my $rv = $dbh->do($stmt) or die $DBI::errstr;
if( $rv < 0 ){
   print $DBI::errstr;
}else{
   print "Nombre total de lignes supprimées : $rv\n";
}
$stmt = qq(SELECT id, name, address, salary  from COMPANY;);
my $sth = $dbh->prepare( $stmt );
$rv = $sth->execute() or die $DBI::errstr;
if($rv < 0){
   print $DBI::errstr;
}
while(my @row = $sth->fetchrow_array()) {
      print "ID = ". $row[0] . "\n";
      print "NAME = ". $row[1] ."\n";
      print "ADDRESS = ". $row[2] ."\n";
      print "SALARY = ". $row[3] ."\n\n";
}
print "Opération effectuée avec succès\n";
$dbh->disconnect();

Lorsque ce programme est exécuté, il génère les résultats suivants :

Base de données ouverte avec succès
Nombre total de lignes supprimées : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY =  25000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY =  20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY =  65000
Opération effectuée avec succès