Latest web development tutorials

SQLite - Perl

installer

SQLite3 peut utiliser l'intégration du module Perl DBI Perl. module Perl DBI est un langage de programmation Perl du module d'accès de base de données. Il définit un ensemble de méthodes, des variables et des règles fournissent une interface de base de données standard.

Ce qui suit montre les étapes simples pour installer le module DBI sur des machines Linux / 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
Faire $
$ Make install

Si vous avez besoin d'installer le pilote SQLite DBI peut alors être installé en suivant ces étapes:

$ 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
Faire $
$ Make install

DBI interface API

Voici les programmes DBI importants pour répondre à vos besoins en utilisant la base de données SQLite dans les programmes Perl. Si vous avez besoin de plus de détails, s'il vous plaît voir la documentation officielle Perl DBI.

序号API & 描述
1DBI->connect($data_source, "", "", \%attr)

建立一个到被请求的 $data_source 的数据库连接或者 session。如果连接成功,则返回一个数据库处理对象。

数据源形式如下所示:DBI:SQLite:dbname='test.db'。其中,SQLite 是 SQLite 驱动程序名称,test.db 是 SQLite 数据库文件的名称。如果文件名filename赋值为':memory:',那么它将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。

如果文件名 filename 为实际的设备文件名称,那么它将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,那么将创建一个新的命名为该名称的数据库文件。

您可以保留第二个和第三个参数为空白字符串,最后一个参数用于传递各种属性,详见下面的实例讲解。

2$dbh->do($sql)

该例程准备并执行一个简单的 SQL 语句。返回受影响的行数,如果发生错误则返回 undef。返回值 -1 意味着行数未知,或不适用 ,或不可用。在这里,$dbh 是由 DBI->connect() 调用返回的处理。

3$dbh->prepare($sql)

该例程为数据库引擎后续执行准备一个语句,并返回一个语句处理对象。

4$sth->execute()

该例程执行任何执行预准备的语句需要的处理。如果发生错误则返回 undef。如果成功执行,则无论受影响的行数是多少,总是返回 true。在这里,$sth 是由 $dbh->prepare($sql) 调用返回的语句处理。

5$sth->fetchrow_array()

该例程获取下一行数据,并以包含各字段值的列表形式返回。在该列表中,Null 字段将作为 undef 值返回。

6$DBI::err

这相当于 $h->err。其中,$h 是任何的处理类型,比如 $dbh、$sth 或 $drh。该程序返回最后调用的驱动程序(driver)方法的数据库引擎错误代码。

7$DBI::errstr

这相当于 $h->errstr。其中,$h 是任何的处理类型,比如 $dbh、$sth 或 $drh。该程序返回最后调用的 DBI 方法的数据库引擎错误消息。

8$dbh->disconnect()

该例程关闭之前调用 DBI->connect() 打开的数据库连接。

Connectez-vous à la 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, il est créé, et enfin retourne un objet de base de données.

#! / Usr / bin / perl

utiliser DBI;
use strict;

my $ driver = "SQLite"; 
ma base de données $ = "test.db";
my $ dsn = "DBI: $ pilote: dbname = $ base de données";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1}) 
                      ou mourir $ DBI :: errstr;

print "base de données \ Ouvert avec succès n";

Maintenant, nous allons exécuter le programme ci - dessus, créez notretest.db de base de données dans le répertoire courant.Vous pouvez modifier le chemin si nécessaire. Enregistrez le code ci-dessus pour sqlite.pl fichier et appuyez montré est effectuée comme suit. Si la base de données est créé avec succès, il affiche le message ci-dessous:

$ Chmod + x sqlite.pl
$ ./sqlite.pl
Ouvrez la base de données avec succès

Créer une table

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

#! / Usr / bin / perl

utiliser DBI;
use strict;

my $ driver = "SQLite";
ma base de données $ = "test.db";
my $ dsn = "DBI: $ pilote: dbname = $ base de données";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1})
                      ou mourir $ DBI :: errstr;
print "base de données \ Ouvert avec succès n";

my $ stmt = qq (CREATE TABLE COMPANY
      (ID INT PRIMARY KEY NOT NULL,
       NOM TEXT NOT NULL,
       AGE INT NOT NULL,
       ADRESSE CHAR (50),
       SALAIRE RÉEL););
my $ rv = $ dbh-> faire ($ stmt);
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Table créée \ avec succès n";
}
$ Dbh-> disconnect ();

Lorsque la procédure ci - dessus, il crée la table de l' entreprise danstest.db et affiche le message ci - dessous:

base de données ouvert avec succès
Tableau créé avec succès

NOTE: Si vous rencontrez l'erreur suivante dans toute opération: au cas où vous voyez l' erreur suivante dans toute l'opération:

DBD :: SQLite :: st execute a échoué: pas d'erreur (21) à la ligne de dbdimp.c 398

Dans ce cas, vous avez ouvert le DBD-SQLite installée dans le fichier dbdimp.c disponible, trouver la fonctionsqlite3_prepare (), et il est le troisième paramètre 0 à -1.Enfin, l'utilisation demake et make installpour installer DBD :: SQLite, vous pouvez résoudre le problème. dans ce cas , vous devrez dbdimp.c ouvert fichier disponible dans l' installation DBD-SQLite et découvrir sqlite3_prepare () et modifier son troisième argument de -1 au lieu de 0. installer Enfin DBD :: SQLite en utilisant make et make install ne pour résoudre le problème.

opération INSERT

Le programme Perl suivant montre comment créer des enregistrements dans la table de société créée ci-dessus:

#! / Usr / bin / perl

utiliser DBI;
use strict;

my $ driver = "SQLite";
ma base de données $ = "test.db";
my $ dsn = "DBI: $ pilote: dbname = $ base de données";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1})
                      ou mourir $ DBI :: errstr;
print "base de données \ Ouvert avec succès n";

my $ stmt = qq (INSERT INTO COMPANY (ID, nom, âge, adresse, SALAIRE)
      VALUES (1, 'Paul', 32, 'California', 20000.00));
my $ rv = $ dbh-> faire ($ stmt) ou mourir $ DBI :: errstr;

$ Stmt = qq (INSERT INTO COMPANY (ID, nom, âge, adresse, SALAIRE)
      VALUES (2, 'Allen', 25, 'Texas', 15000.00));
$ Rv = $ dbh-> faire ($ stmt) ou mourir $ DBI :: errstr;

$ Stmt = qq (INSERT INTO COMPANY (ID, nom, âge, adresse, SALAIRE)
      VALEURS (3, 'Teddy', 23, «Norvège», 20000.00));
$ Rv = $ dbh-> faire ($ stmt) ou mourir $ DBI :: errstr;

$ Stmt = qq (INSERT INTO COMPANY (ID, nom, âge, adresse, SALAIRE)
      VALEURS (4, 'Mark', 25, 'Rich-Mond', 65000.00););
$ Rv = $ dbh-> faire ($ stmt) ou mourir $ DBI :: errstr;

print "Les documents créés avec succès \ n";
$ Dbh-> disconnect ();

Le programme ci-dessus est exécuté, il sera créé dans le tableau de la société pour un enregistrement donné, et affiche les deux lignes suivantes:

base de données ouvert avec succès
Dossiers créé avec succès

opérations SELECT

Le programme Perl suivant montre comment obtenir de la table de société créée plus tôt et affiche l'enregistrement:

#! / Usr / bin / perl

utiliser DBI;
use strict;

my $ driver = "SQLite";
ma base de données $ = "test.db";
my $ dsn = "DBI: $ pilote: dbname = $ base de données";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1})
                      ou mourir $ DBI :: errstr;
print "base de données \ Ouvert avec succès n";

my $ stmt = qq (SELECT id, nom, adresse, salaire de COMPANY;);
my $ sth = $ dbh-> prepare ($ stmt);
my $ rv = $ sth-> execute () ou mourir $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
tandis que (mon @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Imprimer "NAME =" $ row [1] "\ n" .;
      . Imprimer "ADDRESS =" $ row [2] "\ n" .;
      . Imprimer "SALAIRE =" $ row [3] "\ n \ n" .;
}
print "Opération effectuée avec succès \ n";
$ Dbh-> disconnect ();

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

base de données ouvert avec succès
ID = 1
NAME = Paul
ADDRESS = Californie
SALAIRE = 20000

ID = 2
NAME = Allen
ADDRESS = Texas
SALAIRE = 15000

ID = 3
NAME = Teddy
ADDRESS = Norvège
SALAIRE = 20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALAIRE = 65000

Opération effectuée avec succès

opération UPDATE

Le code Perl suivant montre comment utiliser l'instruction UPDATE pour mettre à jour tous les dossiers, puis obtenir à partir du tableau de l'entreprise et afficher l'enregistrement mis à jour:

#! / Usr / bin / perl

utiliser DBI;
use strict;

my $ driver = "SQLite";
ma base de données $ = "test.db";
my $ dsn = "DBI: $ pilote: dbname = $ base de données";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1})
                      ou mourir $ DBI :: errstr;
print "base de données \ Ouvert avec succès n";

my $ stmt = qq (UPDATE COMPANY définie SALAIRE = 25000.00 où ID = 1;);
my $ rv = $ dbh-> faire ($ stmt) ou mourir $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Nombre total de lignes mises à jour: $ rv \ n";
}
$ Stmt = qq (id SELECT, nom, adresse, salaire de COMPANY;);
my $ sth = $ dbh-> prepare ($ stmt);
$ Rv = $ sth-> execute () ou mourir $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
tandis que (mon @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Imprimer "NAME =" $ row [1] "\ n" .;
      . Imprimer "ADDRESS =" $ row [2] "\ n" .;
      . Imprimer "SALAIRE =" $ row [3] "\ n \ n" .;
}
print "Opération effectuée avec succès \ n";
$ Dbh-> disconnect ();

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

base de données ouvert avec succès
Nombre total de lignes mises à jour: 1
ID = 1
NAME = Paul
ADDRESS = Californie
SALAIRE = 25000

ID = 2
NAME = Allen
ADDRESS = Texas
SALAIRE = 15000

ID = 3
NAME = Teddy
ADDRESS = Norvège
SALAIRE = 20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALAIRE = 65000

Opération effectuée avec succès

opération DELETE

Le code Perl suivant montre comment utiliser l'instruction DELETE supprime tous les enregistrements, puis repris dans le tableau de l'entreprise et affiche l'enregistrement restant:

#! / Usr / bin / perl

utiliser DBI;
use strict;

my $ driver = "SQLite";
ma base de données $ = "test.db";
my $ dsn = "DBI: $ pilote: dbname = $ base de données";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1})
                      ou mourir $ DBI :: errstr;
print "base de données \ Ouvert avec succès n";

my $ stmt = qq (DELETE d'entreprise où ID = 2;);
my $ rv = $ dbh-> faire ($ stmt) ou mourir $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Nombre total de lignes supprimées: $ rv \ n";
}
$ Stmt = qq (id SELECT, nom, adresse, salaire de COMPANY;);
my $ sth = $ dbh-> prepare ($ stmt);
$ Rv = $ sth-> execute () ou mourir $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
tandis que (mon @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Imprimer "NAME =" $ row [1] "\ n" .;
      . Imprimer "ADDRESS =" $ row [2] "\ n" .;
      . Imprimer "SALAIRE =" $ row [3] "\ n \ n" .;
}
print "Opération effectuée avec succès \ n";
$ Dbh-> disconnect ();

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

base de données ouvert avec succès
Nombre total de lignes supprimées: 1
ID = 1
NAME = Paul
ADDRESS = Californie
SALAIRE = 25000

ID = 3
NAME = Teddy
ADDRESS = Norvège
SALAIRE = 20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALAIRE = 65000

Opération effectuée avec succès