Schrift
[thread]11847[/thread]

SQL in eigenes Modul :: Denkansatz richtig?

Leser: 1


<< >> 3 Einträge, 1 Seite
MartinR
 2008-05-20 12:49
#109985 #109985
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
Hi!

Ich verwende für die Websiteerstellung CGI::Application

Nun möchte ich meine SQL-Statements möglichst sinnvoll in ein extra Modul auslagern. Ich habe mir dabei folgendes überlegt. Hintergedanke: Ein Statement nur einmal vorbereiten und dann mehrfach nutzen ( wenn nötig ). Ist der Denkansatz so i.O. oder schieße ich mich hier selbst ins Knie?

In meinem Skript irgendwo ...
Code: (dl )
1
2
3
4
...
$self->MySqlStatements::HoleNamen() unless defined $self->{AlleNamen};
$self->{AlleNamen}->execute();
...


Im Modul "MySqlStatements" dann
Code: (dl )
1
2
3
4
5
6
7
8
9
10
sub HoleNamen {
my $self = shift;
my $sql = <<"_EOF";
SELECT
*
FROM
meine_tabelle
_EOF
$self->{AlleNamen} = $self->dbh->prepare( $sql );
}
moritz
 2008-05-20 12:52
#109987 #109987
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Im Prinzip ist das keine schlchte Idee, aber ich würde prepare_cached anstatt von prepare nehmen. Und ich finde die Herangehensweise an die Objektorientierung... interessant ;-)
renee
 2008-05-20 12:54
#109988 #109988
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es ist hässlich von einem Modul aus, direkt auf die Innereien eines Objekts zuzugreifen...

Ich würde es dann eher so machen:

Code: (dl )
1
2
3
4
...
$self->{AlleNamen} = MySqlStatements::HoleNamen() unless defined $self->{AlleNamen};
$self->{AlleNamen}->execute();
...


Code: (dl )
1
2
3
4
5
6
7
8
sub HoleNamen {
return <<"_EOF";
SELECT
*
FROM
meine_tabelle
_EOF
}



Aber schau Dir auch mal das hier an: http://search.cpan.org/dist/DBI/DBI.pm#prepare_cac...
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/
<< >> 3 Einträge, 1 Seite



View all threads created 2008-05-20 12:49.