Schrift
[thread]8961[/thread]

Allgemeine Frage zu Datenbankauswertungen: Modul DBI

Leser: 1


<< >> 7 Einträge, 1 Seite
Duff
 2007-05-03 17:27
#76411 #76411
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

ich habe mal eine Frage zum Modul DBI bzw. welche Art von Datenbankauswertungen es gibt oder man am besten wählt.

Ich habe z.B. bei folgendem SQL-Statement, bei dem eigentlich nur ein Wert zurück kommt (ein count auf eine Spalte), meiner Meinung nach viel zu umständlich mit perl ausgelesen.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
sub db_funtction {
my $dbh = DBI->connect("dbi:Oracle:$db_name",$db_username,$db_password, \%attr) or die "Fehler beim Datenbankconnect:

$DBI::errstr";
my $sql = "SELECT count (*) FROM tabelle...";
my $aref = $dbh->selectall_arrayref($sql,undef) or die "Fehler beim Ausfuehren des Selects: $DBI::errstr";

$dbh->disconnect();

return $aref;
}


Wie hätte ich das ganze besser lösen können. Es funktioniert zwar, aber das speichern in einer ArrayReferenz ist hier doch eigentlich nicht notwendig, sondern macht die ganze Sache nur unnötig aufwendig. Vorallem beim Auslesen der ArrayReferenz, wo nur eine Zahl rauskommt.

Danke.
D'OH
Daniel
frankes
 2007-05-03 19:06
#76412 #76412
User since
2005-04-02
140 Artikel
BenutzerIn

user image
Hallo Duff,

Neben den Ausgaben als Referenz kannst du dir das ganze mit fetchrow_array() auch als Array geben lassen.

Quote

use DBI;

my $dbh =DBI->connect("dbi:Oracle:$db_name",$db_username,$db_password, \%attr) or die "Fehler beim Datenbankconnect:

my $sql = qq{select count(*) FROM Table ... };
my $sth = $dbh->prepare($sql) or die 'Fehler:', $DBI::errstr, "\n" ;

$sth->execute();
if ($sth->err()){die 'Fehler Datenbank: ', $sth->errstr() ,"\n$sql\n";

($count) = $sth->fetchrow_array();

return $count
Duff
 2007-05-04 13:56
#76413 #76413
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Danke.

Gibt es dazu auch noch irgendwo so verschiedene Beispiele für solche Datenbankabfragen bzw. das anschließende Speichern und Auslesen der Daten?

Also was, wo man kurz einen Überblick über die Syntax hat und wo steht, ob man die Daten in einer ArrayRef oder Array oder was auch immer speichern kann???
D'OH
Daniel
vayu
 2007-05-04 14:00
#76414 #76414
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
CPAN:DBI

hier evtl? :)\n\n

<!--EDIT|vayu|1178272970-->
renee
 2007-05-04 14:01
#76415 #76415
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die Syntax steht in der Dokumentation von CPAN:DBI...

Die Daten kann man immer in einem Array oder einer Arrayreferenz speichern (es gibt sogar noch mehr Möglichkeiten). Was die "richtige" Datenstruktur für Dich ist, musst Du von Fall zu Fall selbst entscheiden.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
nepos
 2007-05-04 15:03
#76416 #76416
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, wenn man nur einen einzigen Wert holen will, dann ist selectrow_array() ganz nett. In skalarem Kontext kriegst du dann direkt den Wert zurück und musst ihn nicht erst aus nem Array holen...
Duff
 2007-05-04 20:12
#76417 #76417
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Super, vielen Dank für die vielen, hilfreichen Antworten.

Gruß,
Daniel
D'OH
Daniel
<< >> 7 Einträge, 1 Seite



View all threads created 2007-05-03 17:27.