/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
DBI og flere databaser der vælges automati~
Fra : ma


Dato : 11-05-04 20:27

Jeg har

$dbh1 & $dbh2

Så har jeg nogle data i en løkke som skal indsættes i forskellige tabeller
og forskellige databaser, afhængig af tabelnavn. Jeg har nogle hash hvor jeg
gemmer hvilke tabeller der hører til hvilke databaser.

Således at

tabel1, data herfra skal i $dbh1
tabel2, data herfra skal i $dbh2

Min prepare ser ud således

my $sth = $dbh1->prepare( "INSERT INTO tbl (name) VALUES ('$foo')" )
or die "Can't prepare SQL statement: $DBI::errstr\n";

Hvordan kan jeg lave det "fikst" således at $dbh1 selectes automatisk hvis
tabel1 o.s.v.

Håber på nogle gode input, da jeg ikke helt kan overskue hvordan det skal
gribes an.

Mvh
Michael




 
 
Lars Haugseth (12-05-2004)
Kommentar
Fra : Lars Haugseth


Dato : 12-05-04 10:58


* "ma" <maskinen2000@hotmail.com> wrote:
|
| Jeg har
|
| $dbh1 & $dbh2
|
| Så har jeg nogle data i en løkke som skal indsættes i forskellige tabeller
| og forskellige databaser, afhængig af tabelnavn. Jeg har nogle hash hvor jeg
| gemmer hvilke tabeller der hører til hvilke databaser.
|
| Således at
|
| tabel1, data herfra skal i $dbh1
| tabel2, data herfra skal i $dbh2
|
| Min prepare ser ud således
|
| my $sth = $dbh1->prepare( "INSERT INTO tbl (name) VALUES ('$foo')" )
| or die "Can't prepare SQL statement: $DBI::errstr\n";
|
| Hvordan kan jeg lave det "fikst" således at $dbh1 selectes automatisk hvis
| tabel1 o.s.v.
|
| Håber på nogle gode input, da jeg ikke helt kan overskue hvordan det skal
| gribes an.

# Hvilke tabeller går til hvilke databaser
my $tabel_dbh = {
tabel1 => $dbh1,
tabel2 => $dbh2,
};

# Hent ut riktig db-handle
my $dbh = $tabel_dbh->{'tabel1'};

# Statement
mt $sth = $dbh->prepare("INSERT INTO tabel1 (name) VALUES (?)") or die "...";
[...]

PS. Bruk placeholders (?) når du lager dine SQL-setninger, så slipper du
å tenke på farlige tegn i variablene du dytter inn.

--
Lars Haugseth

ma (12-05-2004)
Kommentar
Fra : ma


Dato : 12-05-04 13:12

"Lars Haugseth" <njus@larshaugseth.com> skrev i en meddelelse
news:m3hdumx90f.fsf@gollum.larshaugseth.com...
> # Hvilke tabeller går til hvilke databaser
> my $tabel_dbh = {
> tabel1 => $dbh1,
> tabel2 => $dbh2,
> };

ok.. Det ser smart ud.. jeg henter dog fra en fil

Hvordan får jeg sat rigtige værdier ind de rigtige steder

f.eks.

$line indeholder tabelnavn, f.eks. tabel1
$2 indeholder strengen "$dbh1", "$dbh2" o.s.v.

my $tabel_dbh = {
'$line' => $2
};

Men det ser ud til at dette ikke virker. Jeg er gået lidt i stå.

Nogen der kan hjælpe mig videre?

--
Mvh
Michael




Lars Haugseth (12-05-2004)
Kommentar
Fra : Lars Haugseth


Dato : 12-05-04 14:44


* "ma" <maskinen2000@hotmail.com> wrote:
|
| "Lars Haugseth" <njus@larshaugseth.com> skrev i en meddelelse
| news:m3hdumx90f.fsf@gollum.larshaugseth.com...
|> # Hvilke tabeller går til hvilke databaser
|> my $tabel_dbh = {
|> tabel1 => $dbh1,
|> tabel2 => $dbh2,
|> };
|
| ok.. Det ser smart ud.. jeg henter dog fra en fil
|
| Hvordan får jeg sat rigtige værdier ind de rigtige steder
|
| f.eks.
|
| $line indeholder tabelnavn, f.eks. tabel1
| $2 indeholder strengen "$dbh1", "$dbh2" o.s.v.

Dette hørtes veldig merkelig ut. Kan du poste litt mer av
koden der du trekker ut disse verdiene, og hvordan filen(e)
ser ut?

Hvis $2 inneholder "$dbh1", kan du bruke

my $dbh = eval $2;

Men det virker _veldig_ grisete, så jeg ville nok ha skrevet
om koden der du velger database.

--
Lars Haugseth

ma (12-05-2004)
Kommentar
Fra : ma


Dato : 12-05-04 15:17

"Lars Haugseth" <njus@larshaugseth.com> skrev i en meddelelse
news:m38yfxyd4l.fsf@gollum.larshaugseth.com...
> Dette hørtes veldig merkelig ut. Kan du poste litt mer av
> koden der du trekker ut disse verdiene, og hvordan filen(e)
> ser ut?
>
> Hvis $2 inneholder "$dbh1", kan du bruke
> my $dbh = eval $2;
> Men det virker _veldig_ grisete, så jeg ville nok ha skrevet
> om koden der du velger database.
> Lars Haugseth

ok.. Jeg er også nybegynder med Perl..

Min fil ser således ud

tabel1:$dbh1
tabel2:$dbh2
tabel3:$dbh3

Så har jeg en regexp således at tabelnavnet ligger i $1 og hvilkden dbh i
$2. hvis jeg forstår dig rigtigt skal det være således

my $tabel_dbh = {
'$1' => eval $2
};

Er det helt vanvittigt at gøre det således?

Tak for din tålmodige hjælp,.

--
Mvh
Michael



Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407938
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste