- connect($datenquelle, $benutzername, $passwort)
- Benutzen Sie die connect-Methode, um eine Verbindung zur Datenbank
der Datenquelle herzustellen. Der $datenquelle-Wert sollte mit
DBI:Treiber_name: beginnen. Beispielanwendungen von connect
mit dem DBD::mysql Treiber:
$dbh = DBI->connect("DBI:mysql:$datenbank", $benutzer, $passwort);
$dbh = DBI->connect("DBI:mysql:$datenbank:$hostname",$benutzer, $passwort);
$dbh = DBI->connect("DBI:mysql:$datenbank:$hostname:$port",$benutzer, $passwort);
Wenn der Benutzername und/oder das Passwort nicht angegeben werden,
verwendet DBI die Werte der DBI_USER- und DBI_PASS-
Umgebungsvariablen. Wenn Sie keinen Hostnamen angeben, wird 'localhost'
verwendet. Wenn Sie keine Portnummer angeben, wird der MySQL-Port verwendet.
Modifikatoren:
| mysql_read_default_file=datei |
Liest 'datei' als eine Optionsdatei. |
| mysql_read_default_group=group_name |
Beim Lesen einer Optionsdatei ist die Standardgruppe normalerweise
die[client]-Gruppe. Wenn Sie die mysql_read_default_group-
Option angeben, wird die Standardgruppe [gruppenname]. |
| mysql_compression=1 |
Aktiviert die Kompression während der Kommunikation zwischen Client und Server. |
| mysql_socket=/pfad/zur/socket |
Gibt den Pfad des Unix-Sockets an, der zum Verbinden mit dem Ser verwendet wird. |
Sie können mehrere Modifikatoren angeben, dabei muss jedem ein Semikolon
vorangestellt sein.
Wenn Sie zum Beispiel vermeiden wollen, dass sie Benutzername und Passwort
im DBI-Skript angeben müssen, können Sie sie aus der
Optionsdatei '~/.my.cnf' nehmen. Ihr connect-Aufruf sieht
folgendermaßen aus:
$dbh = DBI->connect("DBI:mysql:$datenbank"
. ";mysql_read_default_file=$ENV{HOME}/.my.cnf",
$benutzer, $passwort);
Dieser Aufruf liest die Optionen für die [client]-Gruppe aus der
Optionsdatei. Wenn Sie dasselbe für die [perl]-Gruppe tun wollen,
könnte Ihr Code so aussehen:
$dbh = DBI->connect("DBI:mysql:$Datenbank"
. ";mysql_read_default_file=$ENV{HOME}/.my.cnf"
. ";mysql_read_default_group=perl",
$benutzer, $passwort);
- disconnect
- Die disconnect-Methode beendet die Verbindung mit der Datenbank.
Dies wird typischerweise kurz vor dem Ende eines Scripts ausgeführt.
Beispiel:
$rc = $dbh->disconnect;
- prepare($statement)
- Bereitet ein SQL-Statement zum Ausführen durch den Datenbankserver vor und
gibt ein "Statement-Handle" ($sth) zurück, mit der Sie die
execute-Methode aufrufen.
Normalerweise werden Sie SELECT-Statements (und
SELECT-ähnliche Statements so wie SHOW, DESCRIBE und
EXPLAIN) mit der Bedeutung von prepare und execute
verwenden.
Beispiel:
$sth = $dbh->prepare($statement)
or die "$statement: $dbh->errstr kann nicht vorbereitet werden\n";
- execute
- Die execute-Methode führt ein vorbereitetes Statement aus. Bei
Nicht-SELECT-Statements gibt execute die Anzahl der
betroffenen Zeilen zurück. Wenn Zeilen betroffen sind, gibt execute
"0E0" zurück, was in Perl als 0 und true erkannt wird. Wenn ein
Fehler auftritt, gibt execute undef zurück. Bei
SELECT-Statements beginnt execute die SQL-Anfrage in der
Datenbank; Sie müssen eine der fetch_*-Methoden nutzen, die weiter
unten beschrieben sind, um Daten erhalten. Beispiel:
$rv = $sth->execute
or die "Die Query: $sth->errstr kann nicht ausgeführt werden.";
- do($statement)
- Die do-Methode bereitet ein Statement vor, führt es aus und gibt die
Anzahl der betroffenen Zeilen zurück. Wenn Zeilen betroffen sind, gibt
execute "0E0" zurück, was in Perl als 0 und true erkannt
wird. Diese Methode wird normalerweise verwendet, um
Nicht-SELECT-Statements zu bearbeiten, die (z. B. wegen
Treiber-Beschränkungen) nicht vorbereitet werden können, oder die nicht
mehr als einmal vorbereitet werden müssen (INSERTS, DELETE usw.). Beispiel:
$rv = $dbh->do($statement)
or die "$statement: $dbh- >errstr kann nicht vorbereitet werden\n";
Im Allgemeinen ist die do-Methode VIEL schneller (und vorzuziehen)
als die prepare/execute-Methoden, die ohne Parameter
aufgerufen werden.
- quote($string)
- Die quote-Methode wird verwendet, um Sonderzeichen zu "escapen", die
in Zeichenketten enthalten sein können, und um notwendige äußere
Anführungszeichen hinzuzufügen. Beispiel:
$rv = $dbh->quote($string)
- fetchrow_array
- Die Methode holt die nächste Datenzeile und gibt sie als ein Array mit den
Feldwerten zurück. Beispiel:
while(@row = $sth->fetchrow_array)
{
print "$row[0] $row[1] $row[2]\n";
}
- fetchrow_arrayref
- Die Methode holt die nächste Datenzeile und gibt sie als eine Referenz auf
ein Array mit den Feldwerten zurück. Beispiel:
while($row_ref = $sth->fetchrow_arrayref)
{
print "$row_ref->[0] $row_ref->[1] $row_ref->[2]\n";
}
- fetchrow_hashref
- Diese Methode holt eine Datenzeile und gibt eine Referenz auf einen Hash
zurück, der Name-/Wert-Paare enthält. Die Methode ist lange nicht so
performant wie das Verwenden von Referenzen auf ein Array, wie weiter oben
beschrieben ist. Beispiel:
while($hash_ref = $sth->fetchrow_hashref)
{
print "$hash_ref->{vorname}";
print "$hash_ref->{nachname}";
print "$hash_ref->{title}\n";
}
- fetchall_arrayref
- Diese Methode gibt alle Zeilen eines Ergebnisses einer SQL-Anfrage zurück.
Sie gibt eine Referenz auf ein Array mit Referenzen auf Arrays mit den
Werten der einzelnen Zeilen zurück. Sie können mit zwei verschachtelten
Schleifen auf die Werte zugreifen. Beispiel:
my $table = $sth->fetchall_arrayref
or die "$sth->errstr\n";
my($i, $j);
for $i ( 0 .. $#{$table} )
{
for $j ( 0 .. $#{$table->[$i]} )
{
print "$table->[$i][$j] ";
}
print "\n";
}
- finish
- Bewirkt, dass keine weiteren Daten von dem SQL-Anfrageergebnis geholt
werden. Sie können diese Methode aufrufen, um Systemressourcen freizugeben.
Beispiel:
$rc = $sth->finish;
- rows
- Gibt die Anzahl der veränderten Zeilen (die aktualisiert oder gelöscht
wurden) des letzten Befehls zurück. Dies wird normalerweise nach
Nicht-SELECT-execute-Statements verwendet. Beispiel:
$rv = $sth->rows;
- NULLABLE
- Gibt eine Referenz auf ein Array mit Boole'schen Werten zurück; für jedes
Element TRUE kann die Spalte NULL-Werte enthalten. Beispiel:
$rv = $sth->{NULLABLE};
- NUM_OF_FIELDS
- Dieses Attribut enthält die Anzahl der Zeilen, die eine SELECT- oder
SHOW FIELDS-SQL-Anfrage zurückgibt. Sie können es verwenden, um zu
prüfen, ob eine Anfrage ein Ergebnis zurückgegeben hat: 0 weist auf eine
Nicht-SELECT-Anfrage hin, wie INSERT, DELETE oder
UPDATE. Beispiel:
$rv = $sth->{NUM_OF_FIELDS};
- datasource($Treiber_name)
- Diese Methode gibt einen Array zurück, der die Namen der verfügbaren
Datenbanken auf 'localhost' enthält. Beispiel:
@dbs = DBI->datasource("mysql");
- ChopBlanks
- Dieses Attribut gibt an, ob die fetchrow_*-Methoden vor- und
nachstehende Leerzeichen entfernen. Beispiel:
$sth->{'ChopBlanks'} = 1;
- trace($trace_ebene)
- trace($trace_ebene, $trace_dateiname)
- trace aktiviert oder deaktiviert "Tracing".
Wenn DBI als eine Klassenmethode aufgerufen wird, steuert es das
"Tracing" mit allen Datenbankverbindungen. Wenn es als Datenbank- oder
Statement-Handle-Methode aufgerufen wird, steuert es nur die verwendete
Verbindung (und deren spätere Ableitungen). Wenn Sie $trace_ebene
auf 2 setzen, bewirkt es detaillierte Informationen. Der Wert 0 stellt
"Tracing" ab. Die Ausgabe des "Tracing" wird vorgabemäßig nach "standard
error" geleitet. Wenn $trace_dateiname angegeben ist, wird die
Ausgabe für alle "getraceten" Verbindungen an das Ende dieser Datei
geschrieben. Beispiel:
DBI->trace(2); # alles tracen
DBI->trace(2,"/tmp/dbi.out"); # alles nach /tmp/dbi.out tracen
$dth->trace(2); # diese Datenbankverbindung tracen
$sth->trace(2); # dieses Statement-Handle tracen.
Sie können DBI-Tracing auch anschalten, indem Sie die
DBI_TRACE-Umgebungsvariable setzen. Wenn Sie sie auf einen
numerischen Wert setzen, ist das dasselbe, wie DBI->(wert)
aufzurufen. Wenn Sie sie auf einen Pfadnamen setzen, ist das dasselbe, wie
DBI->(2,wert) aufzurufen.