Schrift
[thread]3601[/thread]

Class::DBI: Verständnisprobleme



<< >> 8 Einträge, 1 Seite
Taulmarill
 2004-12-21 11:02
#33429 #33429
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
bin mir nicht sicher, aber das problem hier könnte das benutzen von use base; über mehrere ebenen bei packages sein, die alle in einer datei stehen. ich hatte so ein problem schon mal als ich mit NEXT gearbeitet hab.
teile mal die packages auf einzelne dateien auf und versuch ob's dann klappt.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Ronnie
 2004-12-21 11:54
#33430 #33430
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=sri,21.12.2004, 10:16]Das Skript funktioniert so wie es da steht bei mir![/quote]
Bei mir unter Windows mit folgender Perl-Version leider nicht:
Quote
This is perl, v5.8.3 built for MSWin32-x86-multi-thread

Ich probiere es wohl besser heute Abend nochmal unter Debian.

Class::DBI::Loader klingt wirklich gut. Respekt sri!

EDIT1:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;
use Class::DBI::Loader;

my $loader = Class::DBI::Loader->new(
dsn => "dbi:mysql:cdbi",
user => "webdev",
password => "secret",
namespace => "Data",
);

print Dumper Data::mitarbeiter->retrieve_all;

Das schlägt bei mir leider auch fehl:
Quote
Can't locate object method "set_db" via package "Data::Abteilung" (...)

Das scheint irgendwie ein Windows-Perl-Problem zu sein.

Gruss,
Ronnie\n\n

<!--EDIT|Ronnie|1103623393-->
Strat
 2004-12-22 00:17
#33431 #33431
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
kann es sein, dass man es unter windows nach packages in mehrere Dateien aufteilen muss? (allerdings verstehe ich dann nicht, wieso es unter linux funzt)... hatte vor einiger Zeit mal ein aehnliches Problem, das ich so loesen konnte
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Ronnie
 2004-12-22 11:52
#33432 #33432
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=pq,22.12.2004, 10:47]hab mal verständniss in verständnis geändert. ich konnte es nicht mehr sehen =)[/quote]
@pq: Danke, den Fehler mach ich immer wieder. Und dabei gibt es für Verständnis keinen Plural wie bei Zeugnis, wo ich die zwei 's' unterbringen kann.
Ronnie
 2004-12-21 10:54
#33433 #33433
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Ich wollte mich ein wenig mit Class::DBI beschäftigen. Dazu habe ich mir eine kleine Datenbank 'cdbi' angelegt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#
# Tabellenstruktur für Tabelle `abteilung`
#

DROP TABLE IF EXISTS `abteilung`;
CREATE TABLE `abteilung` (
`AID` bigint(20) unsigned NOT NULL auto_increment,
`Abteilung` varchar(20) NOT NULL default '',
PRIMARY KEY (`AID`)
) TYPE=MyISAM AUTO_INCREMENT=4;

#
# Daten für Tabelle `abteilung`
#

INSERT INTO `abteilung` VALUES (1, 'Entwicklung');
INSERT INTO `abteilung` VALUES (2, 'EDV');
INSERT INTO `abteilung` VALUES (3, 'Buchhaltung');

# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `mitarbeiter`
#

DROP TABLE IF EXISTS `mitarbeiter`;
CREATE TABLE `mitarbeiter` (
`MID` bigint(20) unsigned NOT NULL auto_increment,
`Vorname` varchar(20) NOT NULL default '',
`Nachname` varchar(20) NOT NULL default '',
`SID` bigint(20) unsigned NOT NULL default '0',
`AID` bigint(20) unsigned NOT NULL default '0',
PRIMARY KEY (`MID`)
) TYPE=MyISAM AUTO_INCREMENT=3;

#
# Daten für Tabelle `mitarbeiter`
#

INSERT INTO `mitarbeiter` VALUES (1, 'Joe', 'Mustermann', 1, 1);
INSERT INTO `mitarbeiter` VALUES (2, 'Ray', 'Jones', 3, 2);

# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `standort`
#

DROP TABLE IF EXISTS `standort`;
CREATE TABLE `standort` (
`SID` bigint(20) unsigned NOT NULL auto_increment,
`Standortbezeichnung` varchar(30) NOT NULL default '',
PRIMARY KEY (`SID`)
) TYPE=MyISAM AUTO_INCREMENT=4;

#
# Daten für Tabelle `standort`
#

INSERT INTO `standort` VALUES (1, 'Berlin');
INSERT INTO `standort` VALUES (2, 'Darmstadt');
INSERT INTO `standort` VALUES (3, 'Frankfurt');

Dann das folgende kleine Perl-Skript geschrieben:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl

use strict;
use warnings;

package Staff::DBI;
use base 'Class::DBI';
Staff::DBI->connection('DBI:mysql:host="localhost";database="cdbi"', 'webdev', 'secret');
1;

package Staff::mitarbeiter;
use base 'Staff::DBI';
Staff::mitarbeiter->table('mitarbeiter');
Staff::mitarbeiter->columns(All => qw/MID Vorname Nachname SID AID/);
1;

package Staff::abteilung;
use base 'Staff::DBI';
Staff::abteilung->table('abteilung');
Staff::abteilung->columns(All => qw/AID Abteilung/);
Staff::abteilung->has_many(mitarbeiter => 'Staff::mitarbeiter');
1;

package Staff::standort;
use base 'Staff::DBI';
Staff::standort->table('standort');
Staff::standort->columns(All => qw/SID Standortbezeichnung/);
Staff::standort->has_many(mitarbeiter => 'Staff::mitarbeiter');
1;

# Class::DBI end here - main() is beyond this point

package main;
use Data::Dumper;

my @staff = Staff::mitarbeiter->retrieve_all;
print Dumper \@staff;
exit;

Leider erzeugt es nur folgende Fehlermeldung:
Code: (dl )
Can't locate object method "connection" via package "Staff::DBI" at (...) line 8

Ich habe mich an dem Beispiel auf der CPAN-Seite zu Class::DBI orientiert - kann aber keinen Unterschied feststellen, wieso das dortige Beispiel läuft?!

Gruss,
Ronnie
sri
 2004-12-21 11:16
#33434 #33434
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das Skript funktioniert so wie es da steht bei mir!

Uebrigens benutzen die kewlen Kids heutzutage Class::DBI::Loader. ;)\n\n

<!--EDIT|sri|1103620725-->
Ronnie
 2004-12-21 22:05
#33435 #33435
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hmm, unter Linux funktioniert das erste Beispiel mit Class::DBI, aber das Beispiel mit Class::DBI::Loader bricht wie unter Windows ab?!
pq
 2004-12-22 11:47
#33436 #33436
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
hab mal verständniss in verständnis geändert. ich konnte es nicht mehr sehen =)
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
<< >> 8 Einträge, 1 Seite



View all threads created 2004-12-21 11:02.