Home - Datenbanken und Perl - Programm Code www.sqldocu.com
zurück vor



SQL Anweisungen mit Perl


Beschreibung
top
Bevor SQL Befehle in Perl verwendet werden können, muss eine Verbindung zum RDBMS (DatenbankServer) hergestellt werden (siehe Programm Code).
In Perl setzt sich jede SQL Anweisung aus 3 Teilen zusammen:

  • SQL Anweisung vorbereiten (prepare)
  • SQL Anweisung ausführen (execute)
  • SQL Anweisung abschliessen (finnish)



Syntax
top
Damit SQL Befehle zur Verfügung stehen muss das Modul DBI geladen werden (siehe Programm Code).


#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(SQL Anweisung);
$sth->execute;
$sth->finish;
$dbh->disconnect();

Jede Zeile wird anhand eines vollständigen Beispiels im Kapitel Programm Code ausführlich beschrieben.
Achtung: Wenn dieses Skript über einen Webbrowser (Internet Explorer,Netscape,Mozilla..) aufgerufen wird, erscheint die Fehlermeldung:
Internal Server Error
Grund: SQL Anweisung steht hier symbolisch für eine unten beschriebene Anweisung. Zudem erwartert der Server vom Skript einen Output(Daten). Verwendet man eine unten beschriebene SQL Anweisung und fügt man folgenden Zeilen an den oben angeführten Code hinzu, wird die Fehlermeldung verhindert:

 print "Content-type: text/html\n\n"; # HTML header wird erzeugt
 print "<html><head>\n";
 print "<title>SQLdocu</title>\n";
 print "</head><body>\n";
 print "Beispiel für SQL Anweisung mit Perl\n";
 print "</body></html>\n";


CREATE
top
#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(q{CREATE DATABASE meineDbNeu});
$sth->execute;
$sth->finish;
print "Content-type: text/html\n\n"; # HTML header wird erzeugt
print "<html><head>\n";
print "<title>SQLdocu</title>\n";
print "</head><body>\n";
print "SQL Anweisung: CREATE\n";
print "</body></html>\n";
$dbh->disconnect();

Anstelle des SQL Befehls: CREATE DATABASE kann jeder SQL Befehl stehen, der ein Objekt erzeugt. Z.B: CREATE TABLE meineTabelle (Spalte1 INTEGER,Spalte2 VARCHAR(10))


DELETE
top
Syntax ohne Platzhalter
#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(q{DELETE FROM meineTabelle});
$sth->execute;
$sth->finish;
print "Content-type: text/html\n\n"; # HTML header wird erzeugt
print "<html><head>\n";
print "<title>SQLdocu</title>\n";
print "</head><body>\n";
print "SQL Anweisung: DELETE\n";
print "</body></html>\n";
$dbh->disconnect();

Syntax mit Platzhalter
#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$variable1='beliebigerWert1',$variable2='beliebigerWert2';
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(q{ DELETE FROM meineTabelle
WHERE Spalte1=? AND Spalte2=?});
$sth->execute($variable1,$variable2);
$sth->finish;
print "Content-type: text/html\n\n"; # HTML header wird erzeugt
print "<html><head>\n";
print "<title>SQLdocu</title>\n";
print "</head><body>\n";
print "SQL Anweisung: DELETE\n";
print "</body></html>\n";
$dbh->disconnect();

DELETE wird unter Daten löschen beschrieben.



DROP
top
#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(q{DROP DATABASE meineDbNeu});
$sth->execute;
$sth->finish;
print "Content-type: text/html\n\n"; # HTML header wird erzeugt
print "<html><head>\n";
print "<title>SQLdocu</title>\n";
print "</head><body>\n";
print "SQL Anweisung: DROP\n";
print "</body></html>\n";
$dbh->disconnect();

Anstelle des SQL Befehls: DROP DATABASE kann jeder SQL Befehl stehen, der ein Objekt löscht. Z.B: DROP TABLE meineTabelle


INSERT
top
Syntax ohne Platzhalter
#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(q{ INSERT INTO meineTabelle (vorname,nachname)
VALUES ('Conny','Schmid')});
$sth->execute;
$sth->finish;
print "Content-type: text/html\n\n"; # HTML header wird erzeugt
print "<html><head>\n";
print "<title>SQLdocu</title>\n";
print "</head><body>\n";
print "SQL Anweisung: CREATE\n";
print "</body></html>\n";
$dbh->disconnect();

Syntax mit Platzhalter
#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$variable1='beliebigerWert1',$variable2='beliebigerWert2';
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(q{ INSERT INTO meineTabelle (vorname,nachname)
VALUES (?,?)});
$sth->execute($variable1,$variable2);
$sth->finish;
print "Content-type: text/html\n\n"; # HTML header wird erzeugt
print "<html><head>\n";
print "<title>SQLdocu</title>\n";
print "</head><body>\n";
print "SQL Anweisung: INSERT\n";
print "</body></html>\n";
$dbh->disconnect();

INSERT wird unter Daten einfügen beschrieben.



SELECT
top
Syntax ohne Platzhalter
#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(q{ SELECT vorname,nachname FROM meineTabelle});
$sth->execute;
while (($vorname,$nachname) =$sth->fetchrow_array)
 {
 push(@vornameArray,$vorname);
 push(@nachnameArray,$nachname);
 }
$sth->finish;
print "Content-type: text/html\n\n"; # HTML header wird erzeugt
print "<html><head>\n";
print "<title>SQLdocu</title>\n";
print "</head><body>\n";
print "SQL Anweisung: CREATE\n";
print "</body></html>\n";
$dbh->disconnect();

Syntax mit Platzhalter
#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$variable1='Conny';
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(q{ SELECT vorname,nachname FROM meineTabelle
WHERE vorname=?});
$sth->execute($variable1);
while (($vorname,$nachname) =$sth->fetchrow_array)
 {
 push(@vornameArray,$vorname);
 push(@nachnameArray,$nachname);
 }
$sth->finish;
print "Content-type: text/html\n\n"; # HTML header wird erzeugt
print "<html><head>\n";
print "<title>SQLdocu</title>\n";
print "</head><body>\n";
print "SQL Anweisung: INSERT\n";
print "</body></html>\n";
$dbh->disconnect();

SELECT wird unter Daten abfragen beschrieben.



UPDATE
top
Syntax ohne Platzhalter
#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(q{ UPDATE meineTabelle
SET vorname='Conny'});
$sth->execute;
$sth->finish;
print "Content-type: text/html\n\n"; # HTML header wird erzeugt
print "<html><head>\n";
print "<title>SQLdocu</title>\n";
print "</head><body>\n";
print "SQL Anweisung: CREATE\n";
print "</body></html>\n";
$dbh->disconnect();

Syntax mit Platzhalter
#!d:/perl/bin/perl.exe -w
use CGI::Carp qw(fatalsToBrowser); #sendet Fehlermeldungen an Browser
use DBI;
$vorname='Conny',$nachname='Schmith';
$dsn = "DBI:mysql:database=test;host=localhost;port=3306";
$dbh = DBI->connect( $dsn,'root','geheim' );
$sth = $dbh->prepare(q{ UPDATE meineTabelle
SET nachname=?
WHERE vorname=?});
$sth->execute($nachname,$vorname);
$sth->finish;
print "Content-type: text/html\n\n"; # HTML header wird erzeugt
print "<html><head>\n";
print "<title>SQLdocu</title>\n";
print "</head><body>\n";
print "SQL Anweisung: INSERT\n";
print "</body></html>\n";
$dbh->disconnect();

UPDATE wird unter Daten ändern beschrieben.



top