Zugriff auf SQL-Datenbanken mit Perl
Gelesen bei AboutWebDesign.de
URL: http://www.aboutwebdesign.de/awd/content/973120476.shtml
Wer Perl professionell programmieren will, kommt auf die Dauer nicht um SQL herum. Deswegen gibt es das DBI-Modul, das Ihnen die Sache enorm erleichtert.
Einbindung
Zunächst einmal muss das DBI-Modul eingebunden werden:
use DBI;
Verbindung zur Datenbank herstellen
Um eine Datenbank zu verwenden, muss sie zunächst einmal konnektiert werden:
my $dbname=" ";
my $username=" ";
my $pw=" ";
my $data1 = "DBI:mysql:$dbname";
my $data2 = DBI->connect($data1, $username, $pw, { RaiseError => 1 }) || die("Kann DB nicht öffnen!");
Logischerweise müssen $dbname, $username und $pw mit sinnvollen Werten gefüllt werden. Mit $data2 haben Sie nun eine Art "Handle" auf die Datenbank eingerichtet.
Abfrage durchführen
Eine Abfrage funktioniert nach diesem Muster: Sie definieren eine SQL-Anweisung, die der Datenbank übergeben wird. Dann prüfen Sie, was die Datenbank als Ergebnis zurückliefert.
my $sql="SHOW TABLES"; # SQL-Befehl
my $abfr1=$data2->prepare($sql);
$abfr1->execute;
while (@ergf = $abfr1->fetchrow_array)
{
# Hier: Ergebnisse verarbeiten. Den Wert des ersten Daten-
# feldes des aktuellen Datensatzes finden Sie unter
# $ergf[0], den des zweiten unter $ergf[1], den des dritten
# unter $ergf[2] usw.
}
$abfr1->finish;
Dort, wo die Kommentarzeilen stehen, müssen Sie also etwas mit den Ergebnissen machen. Jeder Durchlauf der while-Schleife holt sich einen neuen Datensatz und schreibt die Werte der Datenfelder der Reihe nach in @ergf.
Anfrage durchführen
Anfragen brauchen Sie, wenn Sie z.B. etwas in die Datenbank schreiben wollen. Das Muster ähnelt dabei sehr dem der Anfrage:
my $sql="DROP TABLE Test"; # SQL-Befehl
eval {
my $anfr=$data2->prepare($sql);
$anfr->execute;
};
if ($@)
{
die "Fehler: $@!";
}
Was wurde hier gemacht? Wir haben den Teil, in dem auf Gültigkeit des SQL-Befehls geprüft wird, in ein eval-Konstrukt verpackt. Dadurch werden Fehler abgefangen. Gleichzeitig wäre es aber leichtsinnig, Ihr Programm trotz eines möglichen Fehlers nicht zu unterbrechen. Daher die Prüfung der Variable $@, die nur einen Wert enthält, wenn die vorherige Anweisung einen Fehler zurücklieferte.
Datenbank schließen
Nicht vergessen werden sollte das Schließen der Datenbank am Ende Ihres Programms:
$data2->disconnect;