Das beste SQLite - Perl-Tutorial im Jahr 2024. In diesem Tutorial können Sie installieren,DBI-Schnittstelle API,Mit der Datenbank verbinden,Erstellen Sie eine Tabelle,INSERT-Operation,SELECT-Operationen,UPDATE-Operation,DELETE-Operation, lernen
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
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 & 描述 |
---|---|
1 | DBI->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() 打开的数据库连接。 |
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
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.
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
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" de; . 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
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" de; . 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
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" de; . 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