Eine der mächtigsten Funktionen von Perl ist seine Fähigkeit, zu verarbeiten, zu analysieren , zu manipulieren und Formatieren von Text und Daten , so dass es eine ideale Sprache für die Entwicklung von Datenbank-Anwendungen. Das Perl Database Interface ( DBI ) Modul macht es einfach zu verbinden und nutzen eine breite Palette von Datenbanksystemen , einschließlich MySQL . Neben Perl, muss der Perl :: DBI -Modul und DBD :: mysql-Datenbank -Treiber auf dem System, auf dem die Skripte entwickelt und ausgeführt werden, installiert werden. Die meisten Funktionen von MySQL durch die MySQL -Treiber für Perl :: DBI zugegriffen werden. Verbinden mit dem MySQL Server
Bevor Sie Abfragen und andere Aussagen, die auf einer Datenbank ausführen kann , muss Ihr Skript, um eine Verbindung herzustellen. Importieren Sie das DBI-Modul in Ihrem Skript mit " use DBI ":
use DBI ;
Die DBI- > connect -Funktion eine Verbindung zu einer Datenbank und gibt ein Datenbank-Handle . Stellen Sie eine Verbindung zu einer lokalen Datenbank und gibt den Namen der Datenbank in der Quell- Parameter und den Benutzernamen und das Passwort für den MySQL-Benutzer das Skript für die Verbindung verwenden:
my $ dbh = DBI -> ; connect ( " DBI : mysql : dbname ',' user ',' password ' ) or die " Verbindung fehlgeschlagen: $ DBI :: errstr ";
Verbindung zu einer Remote-Datenbank ist ähnlich wie eine lokale Verbindung von Bereitstellung der Remote-Host -Adresse in der Quelle Parameter . Im folgenden Beispiel wird die RaiseError Attribut auf Fehler über die () an Stelle des Berichts " or die" manuelle Fehlerprüfung Klausel im vorherigen Beispiel . Die PrintError Attribut ist deaktiviert. PrintError automatisch meldet Fehler über warnen (), wenn aktiviert
my $ dbh = DBI- > connect ( " DBI : mysql : dbname ; host = db.server.edu ' . , ' User ' , ' password ' , { PrintError => 0 , RaiseError => 1 }); .
Vor dem Beenden des Skripts aus der Datenbank mit der Trennen- Funktion trennen
$ dbh-> disconnect ( ) ;
Basic- Abfragen
die häufigste Aussage auf einer Datenbank ausgeführt wird, ist die SELECT-Anweisung . Erstellen Sie ein Statement-Handle durch den Aufruf der Funktion mit der prepare SELECT-Anweisung. Zum Beispiel wird eine Tabelle SELECT Auflistung der Leute zum ersten Feld für alle Einträge, bei denen der Nachname ist " Johnson" abfragen :
my $ sth = $ dbh- > prepare ( "SELECT Vorname FROM Menschen WHERE Nachname = ' Johnson ' ");
führen Sie die Anweisung :
$ sth -> execute () ;
Abrufen einer Reihe von Daten zu einem Zeitpunkt, als ein Hash und die Ergebnisse ausdrucken :
print " Query for Nachnamen Johnson : \\ n"; while ( my $ resultrow = $ sth -> fetchrow_hashref ()) {my $ fn = $ resultrow -> { Vorname }; print "$ fn \\ n"; }
Es gibt mehrere Funktionen zum Abrufen von Abfrageergebnissen , wie fetchrow_array , um die nächste Zeile als Array und fetchall_hashref holen , um alle Ergebnisse auf einmal in holen ein Hash .
Platzhalter verwenden
Platzhalter können in der Anweisung verwendet werden vorzubereiten Funktion . Dies ist nützlich, in denen interaktive Script Abfrage-Filter , die vom Anwender bereitgestellt werden, insbesondere dann, wenn eine Schleife erlaubt dem Benutzer, mehrere Abfragen vor dem Verlassen einzureichen.
Zum Beispiel bietet der Platzhalter (Fragezeichen ) die Stelle, wo Benutzereingaben werden zur Verfügung gestellt , wenn die Anweisung ausgeführt wird :
my $ sth = $ dbh- > prepare ( " SELECT * FROM person WHERE Nachname = ? ') or die" Statement Fehler : " . $ dbh-> errstr ;
Eine while-Schleife wiederholt fragt den Benutzer nach einem Nachnamen :
print " Suche nach Nachnamen :"; while ($ Nachname = <>) { chomp $ Nachname , meine @ Ergebnisse ;
Die Aussage vorbereitet früher ausgeführt wird, mit $ Nachname als Parameter zur Verfügung gestellt. Dieser Parameter wird in der Abfrage -Anweisung anstelle des Fragezeichens Platzhalter eingefügt:
$ sth -> execute ( $ Nachname ) or die "Statement Fehler : " . $ sth -> errstr ;
Die Ergebnisse , wenn überhaupt, werden ausgedruckt :
if ($ sth- > Zeilen == 0 ) {print " Keine Treffer für ` $ Nachname '\\ n \\ n "; . }
while ( @ results = $ sth -> fetchrow_array ()) {my $ Vorname = $ results [1]; my $ age = $ results [3]; print " $ Vorname Nachname $ ( $ age ) \\ n"; }
Die Statement-Handle wird mit dem Ziel Verfahren aufgeräumt , und die Schleife weiter:
$ sth - > finish ; print " Suche nach Nachnamen : ";}
Hinzufügen, Aktualisieren und Löschen von Datensätzen
Updates können Einfügungen und Löschungen einfach mit dem do -Funktion ausgeführt werden. Zum Beispiel:
$ dbh-> weiß ( "INSERT INTO Mitarbeiter ( Vorname , Nachname , Alter) VALUES (' Bob ', ' Johnson ', 32 )"); $ dbh-> weiß ( " UPDATE Leute eingestellt Vorname = ' Robert ' where Vorname = " undef ", Bob ? "); $ dbh- > do ( " DELETE FROM person WHERE Nachname = ' Johnson ' ");
$ dbh-> func ( " createdb ", $ : Aufbau und Verwaltung eines Database
Datenbankadministration Funktionen werden mit der Funktion Funktion mit der Datenbank zu behandeln aus der Verbindung erhalten ausgeführt dbname , 'admin '); $ dbh-> func ( " dropdb ", $ dbname , 'admin ');
Der Server kann auch geladen und heruntergefahren werden . Diese Funktion ist nützlich für die Vereinfachung und Automatisierung von Datenbank-Systemen Verwaltungsaufgaben. Ausreichende Berechtigungen sind für diese Maßnahmen erforderlich.
Datenbank -Tabelle zu erstellen und zu ändern -Anweisungen können mit dem do -Funktion ausgeführt werden. Zum Beispiel schafft diese Aussage die Leute Tabelle :
$ dbh- > do ( "CREATE TABLE Menschen (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Vorname VARCHAR ( 50) , Nachname VARCHAR ( 50 ), Alter INT ) ");
Erstellen und Aktualisieren von bestehenden Datenbanken eignet sich zur Automatisierung der Installation von verteilten Anwendungen , wie z. B. Diskussionsforen, Foto-Galerien und Blogs on
.