Tutoriel classi...SE CONNECTER
Tutoriel classique SQLite
auteur:php.cn  temps de mise à jour:2022-04-13 17:05:02

SQLite-Perl


Installer

SQLite3 peut être intégré à Perl à l'aide du module Perl DBI. Le module Perl DBI est un module d'accès aux bases de données pour le langage de programmation Perl. Il définit un ensemble de méthodes, de variables et de règles qui fournissent une interface de base de données standard.

Les étapes simples pour installer le module DBI sur une machine Linux/UNIX sont présentées ci-dessous :

$ 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 devez installer le pilote SQLite pour DBI, vous pouvez suivre ces étapes pour l'installer :

$ 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 d'interface DBI

Les programmes DBI suivants peuvent répondre à vos besoins en matière d'utilisation de bases de données SQLite dans des programmes Perl. Si vous avez besoin de plus de détails, consultez la documentation officielle Perl DBI.

Numéro de sérieAPI et description
1DBI- > ;connect($data_source, "", "", %attr)

Établissez une connexion ou une session de base de données à la $data_source demandée. Si la connexion réussit, un objet de traitement de base de données est renvoyé.

Le format de la source de données est le suivant : DBI:SQLite:dbname='test.db'. Où SQLite est le nom du pilote SQLite et test.db est le nom du fichier de base de données SQLite. Si le nom de fichier filename reçoit la valeur ':memory:', alors il créera une base de données en mémoire dans la RAM, qui ne durera que pendant la durée de la session.

Si filename est le nom réel du fichier de l'appareil, alors il utilisera cette valeur de paramètre pour essayer d'ouvrir le fichier de base de données. Si un fichier portant ce nom n'existe pas, un nouveau fichier de base de données portant ce nom sera créé.

Vous pouvez laisser les deuxième et troisième paramètres sous forme de chaînes 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 est préparée et exécutée Une simple instruction SQL. Renvoie le nombre de lignes affectées, ou undef si une erreur s'est produite. Une valeur de retour de -1 signifie que le nombre de lignes est inconnu, non applicable ou non disponible. Ici, $dbh est le handle renvoyé par l'appel DBI->connect().

3$dbh->prepare($sql)

Cette routine est le moteur de base de données L'exécution ultérieure prépare une instruction et renvoie un objet de traitement d'instruction.

4$sth->execute()

Cette routine effectue toute préparation d'exécution L'instruction nécessite un traitement. Renvoie undef si une erreur se produit. S'il est exécuté avec succès, renvoie toujours vrai quel que soit le nombre de lignes affectées. Ici, $sth est traité par l'instruction renvoyée par l'appel $dbh->prepare($sql).

5$sth->fetchrow_array()

Cette routine obtient la ligne de données suivante , Et renvoyé sous forme de liste contenant les valeurs de chaque champ. Dans cette liste, les champs Null seront renvoyés sous forme de valeurs undef.

6$DBI::err

Cela équivaut à $h->err. où $h est n'importe quel type de traitement, tel que $dbh, $sth ou $drh. Ce programme renvoie le code d'erreur du moteur de base de données pour la dernière méthode de pilote appelée.

7$DBI::errstr

C'est l'équivalent de $h->errstr. où $h est n'importe quel type de traitement, tel que $dbh, $sth ou $drh. Ce programme renvoie le message d'erreur du moteur de base de données pour la dernière méthode DBI appelée.

8$dbh->disconnect()

La routine est fermée avant d'appeler DBI- >connect() La connexion à la base de données est ouverte.

Connexion à une base de données

Le 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 base de données sera renvoyé.

#!/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 "Opened database successfully\n";

Maintenant, exécutons le programme ci-dessus pour créer notre base de données test.db dans le répertoire courant. Vous pouvez modifier le chemin selon vos besoins. Enregistrez le code ci-dessus dans le fichier sqlite.pl et exécutez-le comme indiqué ci-dessous. Si la base de données est créée avec succès, un message comme celui ci-dessous s'affichera :

$ chmod +x sqlite.pl
$ ./sqlite.pl
Open database successfully

Création d'une table

L'extrait de code Perl suivant sera utilisé pour créer une table dans la base de données précédemment créée. :

#!/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 "Opened database successfully\n";

my $stmt = qq(CREATE TABLE COMPANY
      (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL););
my $rv = $dbh->do($stmt);
if($rv < 0){
   print $DBI::errstr;
} else {
   print "Table created successfully\n";
}
$dbh->disconnect();

Lorsque le programme ci-dessus est exécuté, il créera la table COMPANY dans test.db et affichera le message ci-dessous :

Opened database successfully
Table created successfully

Remarque : Si vous voyez l'erreur suivante dans l'une des opérations :

DBD::SQLite::st execute failed: not an error(21) at dbdimp.c line 398

Dans ce cas, vous avez activé le dbdimp disponible dans votre fichier c DBD-SQLite, recherchez le sqlite3_prepare. () fonction, et changez son troisième paramètre 0 en -1. Enfin, utilisez make et make install pour installer DBD::SQLite afin de résoudre le problème. dans ce cas, vous aurez ouvert le fichier dbdimp.c disponible dans l'installation de DBD-SQLite et découvrirez la fonction sqlite3_prepare() et changerez son troisième argument en -1 au lieu de 0. Enfin, installez DBD::SQLite en utilisant make et faites make install pour résoudre le problème.

Opération INSERT

Le programme Perl suivant montre comment créer la table COMPANY créée ci-dessus Record :

#!/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 "Opened database successfully\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;

$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;

$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;

$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();

Lorsque le programme ci-dessus est exécuté, il créera l'enregistrement donné dans la table COMPANY et affichera les deux lignes suivantes :

Opened database successfully
Records created successfully

Opération SELECT

Perl ci-dessous Le Le programme montre comment obtenir et afficher les enregistrements de la table COMPANY créée précédemment :

#!/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 "Opened database successfully\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 "Operation done successfully\n";
$dbh->disconnect();

Lorsque le programme ci-dessus est exécuté, il produit les résultats suivants :

Opened database successfully
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

Operation done successfully

Opération UPDATE

ci-dessous Le code Perl montre comment mettre à jour n'importe quel enregistrement à l'aide de l'instruction UPDATE, puis obtenir et afficher l'enregistrement mis à jour à partir 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 "Opened database successfully\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 "Operation done successfully\n";
$dbh->disconnect();

Lorsque le programme ci-dessus est exécuté, il produit le résultat suivant :

Opened database successfully
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

Operation done successfully

Opération DELETE

Le code Perl suivant montre comment supprimer n'importe quel enregistrement à l'aide de l'instruction DELETE, 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 "Opened database successfully\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 "Total number of rows deleted : $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 "Operation done successfully\n";
$dbh->disconnect();

Lorsque le programme ci-dessus est exécuté, il génère les résultats suivants :

Opened database successfully
Total number of rows deleted : 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

Operation done successfully

Site Web PHP chinois