Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3455[/thread]

Datenbank-Handle ans Modul übergeben?: oder im Modul erstellen?



<< >> 6 Einträge, 1 Seite
pktm
 2004-05-21 15:03
#32157 #32157
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Sollte man Datenbank-Handles lieber von einem Script aus an ein eingebundenes Modul übergeben oder sollte das Modul (welches immer eines braucht) das Ding selber erstellen lassen?

WelcheVor- / Nachteile enstehen dabei?
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
format_c
 2004-05-21 16:04
#32158 #32158
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich glaube dass du das Handle (Objekt) nicht einfach übergeben kannst (kopieren).
Du kannst es ja im Modul erstellen und eine Referenz auf das Objekt übergeben.

Gruß Alex
pktm
 2004-05-21 22:32
#32159 #32159
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hm, so ganz verstehe ich das jetzt nicht.
Also wenn du ein Hauptprogramm hast, so mit der Endung .pl oder .cgi und darin ein Datenbank-Handle erstellst um das an ein Modul zu übergeben - ist das ok?

Mein Gedankengang dreht sich dabei um den Ort, wo , bzw. wie ich die Zugangsdaten zu Datenbank hinschreibe damit der User nicht beides, Hauptprogramm und Modul bearbeiten muss.

Im Moment habe ich das so gelöst, dass das Modul zur DB connected, die Zugangsdaten und Settings aber aus dem Hauptprogramm kommen.
So kann der User das da bequem einstellen während er den Shebang anpasst :)

mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Gast Gast
 2004-05-22 18:09
#32160 #32160
Spricht etwas dagegen, die für die Datenbankverbindung erforderlichen Variablen im Hauptprogramm (oder in einer Config-Datei) mit Werten zu definieren, die Variablen an das Modul zu übergeben um dann im Modul das DB-Handle aufzumachen?
steffenw
 2004-05-22 18:29
#32161 #32161
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also in welchem Namensraum der Scalar definiert ist, welcher das Datenbankhandle enthält, ich glaube, da ist die Scheißegalbedingung zutreffend.

Ich mache es so, daß ich die verschiedenartigen Zugangsdaten in einem Modul gespeichert habe. Also ich lege mir im Hauptprogramm ein Objekt an, mit dem ich auf die Zugangsdaten zugreifen kann. Während ich eine Datenbankverbindung aufbaue, rufe ich dann die entsprechenden Daten über die Methoden meines Moduls ab. Über einen Schlüssel finde ich die richtigen. Ob dann die Daten im Modul stehen oder dieses diese aus einem File liest, bleibt gleich.
Code: (dl )
1
2
3
4
5
6
7
8
use Modul;
my $dbc = new Modul('evtl. Filename woher es die Daten lesen soll');
my $dbh = DBI->connect(
 $dbc->dsn(qw/host_key database/),   # gibt z.B. 'dbi:mysql:database:127.0.0.1' zurück
 $dbc->ident(qw/connect_key uid pwd/),   # gibt Benutzername und Paßwort zurück
 { RaiseError => ...
 },
);

Ich habe das nur so gemacht, daß ich beim Ändern nicht immer in alle Programme gehen muß, nur weil z.B. die MySQL-Datenbank auf einen schnelleren Rechner gekommen ist. Und außerdem stehen die Zugangsdaten dann nicht im Script, wenn man es mal jemandem zeigt.\n\n

<!--EDIT|steffenw|1085236415-->
$SIG{USER} = sub {love 'Perl' or die};
pq
 2004-06-02 14:47
#32162 #32162
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=format_c,21.05.2004, 14:04]Ich glaube dass du das Handle (Objekt) nicht einfach übergeben kannst (kopieren).
Du kannst es ja im Modul erstellen und eine Referenz auf das Objekt übergeben.[/quote]
hmm? objekte sind schon per se immer referenzen. natürlich kann man
die einem modul übergeben.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 6 Einträge, 1 Seite



View all threads created 2004-05-21 15:03.