Latest web development tutorials

SQLite - Perl

installieren

SQLite3 kann Perl DBI Perl-Modul Integration verwenden. Perl DBI-Modul ist eine Datenbank-Access-Modul Perl Programmiersprache. Es definiert eine Reihe von Methoden, Variablen und Regeln bieten eine Standard-Datenbank-Schnittstelle.

Im Folgenden sind die einfachen Schritten DBI-Modul auf Linux / UNIX-Rechnern zu installieren:

$ 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
$ Stellen
Make $ installieren

Wenn Sie benötigen, um SQLite DBI-Treiber installieren kann dann mit den folgenden Schritten installiert werden:

$ 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
$ Stellen
Make $ installieren

DBI-Schnittstelle API

Im Folgenden werden wichtige DBI-Programm auf Ihre Bedürfnisse mit SQLite-Datenbank in Perl-Programme erfüllen. Wenn Sie weitere Informationen benötigen, wenden Sie sich bitte die offizielle Perl DBI-Dokumentation.

序号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() 打开的数据库连接。

Mit der Datenbank verbinden

Die folgenden Perl-Code zeigt, wie Sie eine bestehende Datenbank zu verbinden. Wenn die Datenbank nicht vorhanden ist, wird sie erstellt, und kehrt schließlich ein Datenbankobjekt.

#! / Usr / bin / perl

verwenden DBI;
use strict;

my $ driver = "SQLite"; 
my $ database = "test.db";
my $ dsn = "DBI: $ Treiber: dbname = $ Datenbank";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {Raiseerror => 1}) 
                      $ DBI oder sterben :: errstr;

print "Geöffnete Datenbank erfolgreich \ n";

Nun wollen wir das obige Programm ausführen, unsere Datenbanktest.db im aktuellen Verzeichnis erstellen.Sie können den Pfad nach Bedarf ändern. Speichern Sie die oben genannten Code-Datei und drücken Sie auf sqlite.pl gezeigt wird wie folgt ausgeführt. Wenn die Datenbank erfolgreich erstellt wurde, wird die unten gezeigte Meldung angezeigt:

$ Chmod + x sqlite.pl
$ ./sqlite.pl
Offene Datenbank erfolgreich

Erstellen Sie eine Tabelle

Das folgende Perl-Code-Snippet wird verwendet, um eine Tabelle in der Datenbank zu erstellen, die zuvor erstellt:

#! / Usr / bin / perl

verwenden DBI;
use strict;

my $ driver = "SQLite";
my $ database = "test.db";
my $ dsn = "DBI: $ Treiber: dbname = $ Datenbank";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {Raiseerror => 1})
                      $ DBI oder sterben :: errstr;
print "Geöffnete Datenbank erfolgreich \ n";

my $ stmt = qq (CREATE TABLE COMPANY
      (ID INT PRIMARY KEY NOT NULL,
       Der Name TEXT NOT NULL,
       AGE INT NOT NULL,
       ADDRESS CHAR (50),
       GEHALT REAL););
my $ rv = $ dbh-> do ($ stmt);
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Tabelle erfolgreich \ n erstellt";
}
$ Dbh-> disconnect ();

Wenn das obige Verfahren, es COMPANY Tabelle intest.db erstellt und zeigt die folgende Meldung angezeigt:

Geöffnete Datenbank erfolgreich
Tabelle erstellt erfolgreich

HINWEIS: Wenn Sie den folgenden Fehler in jeder Operation auftreten: im Fall , dass Sie sehen folgende Fehler in jeder der Operation:

DBD :: SQLite :: st fehlgeschlagen Execute: kein Fehler (21) an dbdimp.c Linie 398

In diesem Fall haben Sie den DBD-SQLite installiert in der verfügbaren dbdimp.c Datei geöffnet wird , findensqlite3_prepare () Funktion, und es ist der dritte Parameter 0 bis -1.Schließlich ist die Verwendung vonmake und make installDBD :: SQLite zu installieren, können Sie das Problem lösen. in diesem Fall werden Sie offen dbdimp.c haben Datei in DBD-SQLite Installation und sqlite3_prepare () Funktion herausfinden, und seine dritte Argument ändern auf -1 statt 0 Schließlich installieren DBD :: SQLite lösen machen und machen installieren das Problem.

INSERT-Operation

Das folgende Perl-Programm zeigt, wie Datensätze in der Tabelle FIRMA oben erstellt zu erstellen:

#! / Usr / bin / perl

verwenden DBI;
use strict;

my $ driver = "SQLite";
my $ database = "test.db";
my $ dsn = "DBI: $ Treiber: dbname = $ Datenbank";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {Raiseerror => 1})
                      $ DBI oder sterben :: errstr;
print "Geöffnete Datenbank erfolgreich \ n";

my $ stmt = qq (INSERT INTO COMPANY (ID, Name, Alter, Adresse, GEHALT)
      VALUES (1, 'Paul', 32, 'California', 20000.00));
my $ rv = $ dbh-> do ($ stmt) oder $ DBI :: errstr sterben;

$ Stmt = qq (INSERT INTO COMPANY (ID, Name, Alter, Adresse, GEHALT)
      VALUES (2, 'Allen', 25 'Texas', 15000.00));
$ Rv = $ dbh-> tun ($ stmt) or die $ DBI :: errstr;

$ Stmt = qq (INSERT INTO COMPANY (ID, Name, Alter, Adresse, GEHALT)
      VALUES (3, 'Teddy', 23, "Norwegen", 20000.00));
$ Rv = $ dbh-> tun ($ stmt) or die $ DBI :: errstr;

$ Stmt = qq (INSERT INTO COMPANY (ID, Name, Alter, Adresse, GEHALT)
      VALUES (4, 'Mark', 25 ', Reiche-Mond', 65000.00););
$ Rv = $ dbh-> tun ($ stmt) or die $ DBI :: errstr;

print "Aufzeichnungen erfolgreich \ n erstellt";
$ Dbh-> disconnect ();

Das obige Programm ausgeführt wird, wird es in der Tabelle FIRMA für einen bestimmten Datensatz erstellt und zeigt die beiden folgenden Zeilen:

Geöffnete Datenbank erfolgreich
Aufzeichnungen erstellt erfolgreich

SELECT-Operationen

Das folgende Perl-Programm zeigt, wie aus der Tabelle FIRMA zuvor erstellt bekommen und zeigt den Datensatz:

#! / Usr / bin / perl

verwenden DBI;
use strict;

my $ driver = "SQLite";
my $ database = "test.db";
my $ dsn = "DBI: $ Treiber: dbname = $ Datenbank";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {Raiseerror => 1})
                      $ DBI oder sterben :: errstr;
print "Geöffnete Datenbank erfolgreich \ n";

my $ stmt = qq (SELECT id, Name, Adresse, Gehalt von COMPANY;);
my $ sth = $ dbh-> prepare ($ stmt);
my $ rv = $ sth-> execute () oder $ DBI :: errstr sterben;
if ($ rv <0) {
   print $ DBI :: errstr;
}
while (my @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Drucken "name =" $ row [1] "\ n" .;
      Drucken ". ADDRESS =" $ row [2] "\ n" .;
      . Drucken "GEHALT =" $ row [3] "\ n \ n" .;
}
print "Der Vorgang wurde erfolgreich \ n getan";
$ Dbh-> disconnect ();

Wenn das obige Programm ausgeführt wird, wird es die folgenden Ergebnisse erzielt:

Geöffnete Datenbank erfolgreich
ID = 1
NAME = Paul
ADDRESS = Kalifornien
GEHALT = 20000

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

ID = 3
NAME = Teddy
ADDRESS = Norwegen
GEHALT = 20000

ID = 4
NAME = Mark
ADDRESS = Reiche-Mond
GEHALT = 65000

Der Betrieb getan erfolgreich

UPDATE-Operation

Das folgende Perl-Code zeigt, wie die UPDATE-Anweisung zu verwenden, um alle Datensätze zu aktualisieren, dann aus COMPANY Tisch zu bekommen und den aktualisierten Datensatz anzuzeigen:

#! / Usr / bin / perl

verwenden DBI;
use strict;

my $ driver = "SQLite";
my $ database = "test.db";
my $ dsn = "DBI: $ Treiber: dbname = $ Datenbank";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {Raiseerror => 1})
                      $ DBI oder sterben :: errstr;
print "Geöffnete Datenbank erfolgreich \ n";

my $ stmt = qq (UPDATE GESELLSCHAFT GEHALT = 25000.00 wo ID = 1;);
my $ rv = $ dbh-> do ($ stmt) oder $ DBI :: errstr sterben;
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Anzahl der Zeilen aktualisiert: $ rv \ n";
}
$ Stmt = qq (SELECT id, Name, Adresse, Gehalt von COMPANY;);
my $ sth = $ dbh-> prepare ($ stmt);
$ Rv = $ sth-> execute () oder sterben $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
while (my @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Drucken "name =" $ row [1] "\ n" .;
      Drucken ". ADDRESS =" $ row [2] "\ n" .;
      . Drucken "GEHALT =" $ row [3] "\ n \ n" .;
}
print "Der Vorgang wurde erfolgreich \ n getan";
$ Dbh-> disconnect ();

Wenn das obige Programm ausgeführt wird, wird es die folgenden Ergebnisse erzielt:

Geöffnete Datenbank erfolgreich
Gesamtzahl der Zeilen aktualisiert: 1
ID = 1
NAME = Paul
ADDRESS = Kalifornien
GEHALT = 25000

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

ID = 3
NAME = Teddy
ADDRESS = Norwegen
GEHALT = 20000

ID = 4
NAME = Mark
ADDRESS = Reiche-Mond
GEHALT = 65000

Der Betrieb getan erfolgreich

DELETE-Operation

Das folgende Perl-Code zeigt, wie die DELETE-Anweisung zu verwenden, um alle Datensätze löscht, und dann von der Firma Tabelle entnommen und zeigt die verbleibende Aufnahme:

#! / Usr / bin / perl

verwenden DBI;
use strict;

my $ driver = "SQLite";
my $ database = "test.db";
my $ dsn = "DBI: $ Treiber: dbname = $ Datenbank";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {Raiseerror => 1})
                      $ DBI oder sterben :: errstr;
print "Geöffnete Datenbank erfolgreich \ n";

my $ stmt = qq (DELETE von Unternehmen, in dem ID = 2;);
my $ rv = $ dbh-> do ($ stmt) oder $ DBI :: errstr sterben;
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Anzahl der Zeilen gelöscht: $ rv \ n";
}
$ Stmt = qq (SELECT id, Name, Adresse, Gehalt von COMPANY;);
my $ sth = $ dbh-> prepare ($ stmt);
$ Rv = $ sth-> execute () oder sterben $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
while (my @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Drucken "name =" $ row [1] "\ n" .;
      Drucken ". ADDRESS =" $ row [2] "\ n" .;
      . Drucken "GEHALT =" $ row [3] "\ n \ n" .;
}
print "Der Vorgang wurde erfolgreich \ n getan";
$ Dbh-> disconnect ();

Wenn das obige Programm ausgeführt wird, wird es die folgenden Ergebnisse erzielt:

Geöffnete Datenbank erfolgreich
Gesamtanzahl der Zeilen gestrichen: 1
ID = 1
NAME = Paul
ADDRESS = Kalifornien
GEHALT = 25000

ID = 3
NAME = Teddy
ADDRESS = Norwegen
GEHALT = 20000

ID = 4
NAME = Mark
ADDRESS = Reiche-Mond
GEHALT = 65000

Der Betrieb getan erfolgreich