Database handle problem

14/01/2008 - 12:41 von Ervin Peters | Report spam
Icha habe ein klasse database:

use DBI;
use DBD::Pg;

...

sub new
{
my ( $class, ..) = @_;
..
my $self = {};
bless $self, $class;
$dbh = DBI->connect(..);
$self->{dbh} = $dbh;
}

...


Ich übergebe nun vom Kontrollscript entweder das objekt oder das
Databasehandle an ein anders Klassenobjekt:

main.pl:

my $db = database->new(..);
my $session = mysession->new( $db->{dbh} );

und mache dann was in mysession damit:

mysession:
sub new
{
my ($class, $dbh) = @_;
my $self = { _dbh => $dbh };
bless( $self, $class );
}

sub dosomething
{
my ($self) = @_;
my $sql = ...;
$self->{_dbh}->do($sql);
...
}

Das gibt einen Fehler: Can't call method "do" on an undefined value...

Füge ich vor dem 'do' ein

print "$self->{_dbh}"

ein, kommt das raus:

DBI::db=HASH(0x1251060)

Warum funktioniert das nicht? Was mache ich falsch?

Grüße,
ervin
 

Lesen sie die antworten

#1 Frank Seitz
14/01/2008 - 12:58 | Warnen spam
Ervin Peters wrote:

$self->{_dbh}->do($sql);


[...]
Das gibt einen Fehler: Can't call method "do" on an undefined value...

Füge ich vor dem 'do' ein

print "$self->{_dbh}"

ein, kommt das raus:

DBI::db=HASH(0x1251060)



Das kann nicht sein. Perl gibt nicht die Fehlermeldung
"Can't call method on an undefined value", wenn die
Referenz definiert ist.

Grüße
Frank
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Ähnliche fragen