English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SQLite3 Es kann mit dem Perl DBI-Modul integriert werden. Das Perl DBI-Modul ist ein Datenbankzugriffsmodul für die Programmiersprache Perl. Es definiert eine Reihe von Methoden, Variablen und Regeln, die eine standardisierte Datenbank-Schnittstelle bereitstellen.
Nachstehend gezeigt wird in Linux/Einfache Schritte zur Installation des DBI-Moduls auf UNIX-Maschinen:
$ 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
Wenn Sie den SQLite-Treiber für DBI installieren müssen, können Sie die folgenden Schritte befolgen, um die Installation durchzuführen:
$ 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
Dies ist ein wichtiger DBI-Programm, das Ihre Anforderungen an die Verwendung von SQLite-Datenbanken in Perl-Programmen erfüllen kann. Wenn Sie mehr Details benötigen, lesen Sie bitte die offizielle Dokumentation von Perl DBI.
Nummer | API & Beschreibung |
---|---|
1 | DBI->connect($data_source, "", "", %attr) Etabliere eine Datenbankverbindung oder Sitzung zu dem angeforderten $data_source. Gibt die Verbindung erfolgreich her, wird ein Datenbankverarbeitungsobjekt zurückgegeben. Die Datenquelle hat die folgende Form:DBI:SQLite:dbname='test.db'. Dort ist SQLite der Name des SQLite-Treibers, test.db der Name der SQLite-Datenbankdatei. Wenn der Dateiname filename zuweisen ':memory:', dann wird eine in RAM angelegte Speicherdatenbank erstellt, die nur während der Gültigkeit der Sitzung besteht. Wenn der Dateiname filename der tatsächliche Gerätename ist, versucht es mit diesem Parameterwert, die Datenbankdatei zu öffnen. Wenn die Datei mit diesem Namen nicht existiert, wird eine neue Datenbankdatei mit diesem Namen erstellt. Sie können die zweiten und dritten Parameter als leere Zeichenfolgen behalten, der letzte Parameter wird verwendet, um verschiedene Attribute zu übergeben, siehe die folgenden Beispiele. |
2 | $dbh->do($sql) Diese Routine bereitet und führt eine einfache SQL-Anweisung aus. Gibt die Anzahl der betroffenen Zeilen zurück, gibt es einen Fehler zurück, wird undef zurückgegeben. Der Rückgabewert -1 bedeutet, dass die Anzahl der Zeilen unbekannt ist, oder nicht zutreffend, oder nicht verfügbar. Hierbei ist $dbh von DBI->connect() gibt das verarbeitende Objekt zurück. |
3 | $dbh->prepare($sql) Diese Routine bereitet eine Anweisung für die nachfolgende Ausführung durch die Datenbankengine vor und gibt ein Anweisungsverarbeitungsobjekt zurück. |
4 | $sth->execute() Diese Routine führt alle erforderlichen Verarbeitungen für die Ausführung einer vorbereiteten Anweisung aus. Gibt es einen Fehler, wird undef zurückgegeben. Erfolgt die Ausführung erfolgreich, wird immer true zurückgegeben, unabhängig von der Anzahl der betroffenen Zeilen. Hierbei ist $sth von $dbh->prepare($sql) gibt die verarbeitende Anweisung zurück. |
5 | $sth->fetchrow_array() Diese Routine holt das nächste Datenzeilen und gibt es in Form einer Liste mit den Werten der Felder zurück. Ein Null-Feld wird als undef-Wert zurückgegeben. |
6 | $DBI::err Das entspricht $h->err. Darin ist $h jeder Verarbeitungstyp, z.B. $dbh, $sth oder $drh. Das Programm gibt den Fehlercode der Datenbankengine des zuletzt aufgerufenen Treiber-Verfahrens zurück. |
7 | $DBI::errstr Das entspricht $h->errstr. Darin ist $h jeder Verarbeitungstyp, z.B. $dbh, $sth oder $drh. Das Programm gibt die Fehlermeldung der Datenbankengine des zuletzt aufgerufenen DBI-Verfahrens zurück. |
8 | $dbh->disconnect() 该例程关闭之前调用 DBI-Diese Routine wird vor dem Aufruf von DBI geschlossen. |
Datenbankverbindung
#!/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";
Der folgende Perl-Code zeigt, wie man sich mit einer bestehenden Datenbank verbindet. Wenn die Datenbank nicht existiert, wird sie erstellt und letztendlich wird ein Datenbankobjekt zurückgegeben. Wenn das obige Programm ausgeführt wird, wird es inLassen Sie uns nun das obige Programm ausführen, um unsere Datenbank im aktuellen Verzeichnis zu erstellen
。Sie können den Pfad nach Bedarf ändern. Speichern Sie den obigen Code in die Datei sqlite.pl und führen Sie ihn wie folgt aus. Wenn die Datenbank erfolgreich erstellt wurde, wird die folgende Nachricht angezeigt: +$ chmod x sqlite.pl/$ . sqlite.pl
Tabellen erstellen
#!/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"; Der folgende Perl-Codeabschnitt wird verwendet, um eine Tabelle in der zuvor erstellten Datenbank zu erstellen: mein $stmt = qq(CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, ALTER INT NOT NULL,5ADRESSE CHAR( 0), my $rv = $dbh-GEBÄHR REAL);); if($rv < 0){ print $DBI::errstr; >do($stmt); } else { } $dbh->disconnect();
Drucken Sie "Tabelle erfolgreich erstellt\n"; Wenn das obige Programm ausgeführt wird, wird es in test.db
Datenbank erfolgreich geöffnet Erstellen Sie die Tabelle COMPANY in der Tabelle und zeigen Sie die folgende Nachricht an:
Tabelle erfolgreich erstelltHinweis:
Wenn Sie bei jeder Operation die folgenden Fehler beobachten: falls Sie bei einer beliebigen Operation die folgenden Fehler sehen:21DBD::SQLite::st execute failed: not an error( 398
) in Zeile dbdimp.c-In diesem Fall haben Sie bereits in DBD sqlite3_prepare() SQLite hat während der Installation die verfügbare Datei dbdimp.c geöffnet und gefunden -1Am Ende verwenden Sie die Funktion und ändern Sie den dritten Parameter 0 in build und install Installieren Sie DBD::SQLite, um das Problem zu lösen. in diesem Fall müssen Sie die Datei dbdimp.c öffnen, die in DBD verfügbar ist-SQLite Installation und Finden sqlite3_prepare() Funktion und ändern Sie seinen dritten Parameter in -1 statt 0. Installieren Sie schließlich DBD::SQLite unter Verwendung build und dann install um das Problem zu lösen.
Das folgende Perl-Programm zeigt, wie man Zeilen in der zuvor erstellten Tabelle COMPANY erstellt:
#!/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) Werte (1, 'Paul', 32, 'Kalifornien', 20000.00 )); my $rv = $dbh->do($stmt) or die $DBI::errstr; my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) Werte (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) Werte (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) Werte (4, 'Mark', 25, 'Rich'-Mond ', 65000.00 )); $rv = $dbh->do($stmt) or die $DBI::errstr; print "Daten erfolgreich erstellt\n"; $dbh->disconnect();
Wenn das obige Programm ausgeführt wird, erstellt es die angegebenen Zeilen in der Tabelle COMPANY und zeigt die folgenden zwei Zeilen an:
Datenbank erfolgreich geöffnet Daten erfolgreich erstellt
Das folgende Perl-Programm zeigt, wie man Zeilen aus der zuvor erstellten Tabelle COMPANY abruft und anzeigt:
#!/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();
Während die obige Anweisung ausgeführt wird, erzeugt sie die folgenden Ergebnisse:
Datenbank erfolgreich geöffnet 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 erfolgreich durchgeführt
Das folgende Perl-Code zeigt, wie man die UPDATE-Anweisung verwendet, um jede Zeile zu aktualisieren und dann die aktualisierten Zeilen aus der Tabelle COMPANY abzurufen und anzuzeigen:
#!/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 wo ID=1;); my $rv = $dbh->do($stmt) or die $DBI::errstr; if( $rv < 0 ){ print $DBI::errstr; }else{ print "Gesamtzahl der aktualisierten Zeilen : $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();
Während die obige Anweisung ausgeführt wird, erzeugt sie die folgenden Ergebnisse:
Datenbank erfolgreich geöffnet Gesamtzahl der aktualisierten Zeilen : 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 erfolgreich durchgeführt
Das folgende Perl-Codebeispiel zeigt, wie man mit dem DELETE-Befehl jede Zeile löscht und dann die verbleibenden Zeilen aus der Tabelle COMPANY abruft und anzeigt:
#!/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();
Während die obige Anweisung ausgeführt wird, erzeugt sie die folgenden Ergebnisse:
Datenbank erfolgreich geöffnet Gesamtzahl der gelöschten Zeilen: 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 erfolgreich durchgeführt