"RTFFAQ!"
Wer schreibt nicht gerne diese netten Buchstaben? Damit ich das jetzt noch öfter
schreiben kann, habe Ich begonnen, diese Seiten zusammenzustellen.
Gedacht sind sie als meine Ergänzung zur FAQ der Gruppen de.comp.lang.perl.misc und de.comp.lang.perl.cgi.
Wer diese Seiten nicht kennnt, sollte zuerst bei http://www.worldmusic.de/perl/
vorbeischauen und lesen. Die Auswahl der Themen ist willkürlich und nur durch meinen persönlichen Geschmack bestimmt.
Kritik zu dieser Seite kann geschickt werden an perlfaq@grolmsnet.de
Zur Anbindung von Datenbanken an Perl benötigt man zwei Module: DBI.pm, ein Modul welches eine generische Schnittstelle für den Programmierer bildet und ein zur verwendeten Datenbank passendes Treibermodul aus der DBD::* Serie.(z.B. DBD::Oracle zur Anbindung einer Oracle Datenbank). Eine Liste aller verfügbaren DBD-Treiber findet man unter http://dbi.symbolstone.org/ oder im CPAN
Unter http://www.ora.de/catalog/perldbiger/chapter/speck.html findet sich die deutschsprachige Übersetzung von perldoc DBI.
Gegenfrage: Warum sollte man das wollen ?
Die Verwendung mit Perl läßt darauf schliessen,daß man eigentlich einen Datenbankserver einsetzen will.
Es stehen hier eine breite Palette freier "freier" (z.B. MySQL, PosgreSQL) als auch
kommerzieller Produkte (z.B. Oracle)zur Verfügung. Falls man trotzdem mit Perl und Access herumspielen möchte, bietet sich das Modul
Win32::ODBC an. Zu diesem Modul gehören leicht verständliche Beispielskripte, mit denen man sich leicht in die Thematik einarbeiten kann.
Wer später die Datenbank wechseln oder möglichst betriebssystemunabhängig arbeiten möchte, sollte gleich auf die Kombination DBI/DBD::ODBC setzen.
Ein weiterer Lesetip sind die Windows und Access Hilfedateien zum Thema ODBC.
Hierzu hat die ix einen Artikel geschrieben, verfügbar unter http://www.heise.de/ix/artikel/2000/10/176/
DBI setzt die allgemeine Fehlervariable $! nicht sondern verfügt über eigene Fehlerbehandlungsmechnismen. Man kann DBI aber auf "geschwätzig" einstellen:
$dbh->{RaiseError} = 1; $dbh->{PrintError} = 1;
Jetzt wird jeder DB-Fehler sofort mit ausführlicher Meldung quittiert
SQL erwartet alle "Charakterwerte" (CHAR, VARCHAR2) in Apostrophen gequoted.
Beispiel:
SELECT ID FROM WEBSEITEN WHERE NAME = 'Achim's Seite über korrekten Apostrophgebrauch'
Hier entsteht das Problem, die inneren Apostrophe korrekt herauszuescapen.
Das erfordert nicht nur Hirnschmalz, es ist auch DB-abhängig.
Darum bringt DBI passende Methoden für die Parameter Ein/Ausgabe mit:
bind_param() ("call by value") und bind_param_inout() ("call by reference").
Obiges Beispiel könnte man folgendermaßen schreiben:
my $parametor = q{Achim's Seite über korrekten Apostrophgebrauch}; my $sth->prepare('SELECT ID FROM WEBSEITEN WHERE NAME = ? '); $sth->bind_param(1, $parametor); $sth->execute;
Auf einen Schlag haben sich die Quotingprobleme erledigt.
Der klassische Weg, ein vom CPAN bereitgestelltes Modul zu installieren besteht in der Kommandosequenz an der Shell
perl Makefile.PL make make test make install
Ohne weitere Vorkehrungen lässt sich dieser Weg unter MS Windows nicht beschreiten, da standardmäßig dort das unter
unixoiden Betriebsystemen weitverbreitete Programm make nicht vorhanden ist.
Anstelle von make kann man nmake verwenden, erhältlich
unter ftp://ftp.microsoft.com/softlib/mslfiles/nmake15.exe.
Eine weitere Hürde stellen Module dar, die einen Anteil C enthalten und damit eines C-Compilers bedürfen.
(Erkennbar an Dateien im Paket deren Name auf .c oder .h endet).
Hier kann man mit etwas Glück unter
http://www.ActiveState.com/PPMPackages/zips/6xx-builds-only/ (nur Perl 5.6)
ein für AS-Perl vorkompiliertes Modul finden und leicht nach den Anweisungen des mitgelieferten README Files installieren.
Eine Shell ist eine zeichen-und tastaturorientierte Benutzerschnittstelle und
stammt aus Zeiten, als Rechner noch keine graphischen Benutzerschnittstellen wie MS Windows besaßen. Obwohl
auf einen Benutzer, der nur Maus und Fensteroberfläche kennt, eine Shell altmodisch wirken mag,
stellt sie bei etwas Übung einen höchst effektiven Weg zum Informationszugriff und zur Rechnersteuerung dar.
Unter Windows heißt die Shell MS-DOS Eingabeaufforderung und ist zu finden unter
Start->Programme->MS-DOS Eingabeaufforderung | (95/98/NT40) |
Start->Programme->Zubehör->MS-DOS Eingabeaufforderung | (2000) |
perldoc ist Perls Hilfesystem für die Shell.
Informationen zur Benutzung von perldoc lassen sich beispielsweise abrufen durch Eingabe von
perldoc perldoc