Schrift
[thread]3818[/thread]

Perl Skript um sich an SQL - DB anzumelden

Leser: 1


<< >> 10 Einträge, 1 Seite
Bschorf
 2007-05-21 11:26
#35514 #35514
User since
2007-04-18
12 Artikel
BenutzerIn
[default_avatar]
Hallo,

Hat jemand zufällig ein Perl-Script um sich an einer PostgreSQL-DB anzumelden???

Evtl. auch ein Skript um die enhalten Daten zu ändern? löschen? anzeigen? neuanlegen???


wäre echt super....

vielen Dank
styx-cc
 2007-05-21 12:51
#35515 #35515
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Das kannst du via Modul erledigen:
CPAN:DBI
CPAN:DBD::Pg

Die SQL-Statements musst du natuerlich selber bauen =)
Pörl.
nepos
 2007-05-21 15:06
#35516 #35516
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wenns dir um die Administration geht, da gibts mit phpPgAdmin eine recht komfortable Webloesung, halt PHP, wie der Name schon sagt.
Ansonsten waere eventuell auch pgadmin3 was fuer dich.

Je nachdem, was du halt genau machen willst...
Bschorf
 2007-05-21 16:37
#35517 #35517
User since
2007-04-18
12 Artikel
BenutzerIn
[default_avatar]
eigentlich brauch ich nur ein einfaches PERL Skript um:

1. an eine postgreSQL-DB anzumelden
2. inhalt auflisten
3. änder
4. löschen
5. hinzufügen

es muss eben in perl sein, kein php oder sonstiges.
nur punkt 1 und 2 würd mir auch erstmal reichen, wenn das zufällig jemand hat
nepos
 2007-05-21 21:16
#35518 #35518
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nun ja, dann ans Werk :)
Die dazu nötigen Module hat dir styx-cc ja schon gepostet :)
Bschorf
 2007-05-22 13:01
#35519 #35519
User since
2007-04-18
12 Artikel
BenutzerIn
[default_avatar]
also nepos ^^

so weit bin ich ^^
ich will erstmal nur die perl scripte schreiben ohne HTML kram.

login.pl <-- recht einfach

Code: (dl )
1
2
3
4
..

my $dbh = DBI->connect("dbi:Pg:dbname=Raum;host=127.0.0.1;Port=5342", "perl_db", "****", { RaiseError => 0, AutoCommit => 0 }) or croak $DBI::errstr;
..


Nun muss ich eben auf der DB folgen befehle anwenden können: SELECT, INSERT, DELETE, UPDATE

nur wie soll ich das machen? Komme irgendiwe nicht so ganz klar.

habe folgenden Code :

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
1. Die SQL-Anweisung vorbereiten.
2. Die SQL-Anweisung ausfuehren.
3. Die Ergebnisse abrufen.
4. Die SQL-Transaktion beenden.

# 1. prepare statement handle $sth
$cmd = 'SELECT * FROM table WHERE id = ? AND date > ?'; my $sth = $dbh->prepare_cached($cmd)
or croak "SQL prepare failed '$cmd': " . $dbh->errstr;

# 2. execute statement (via its handle)
my $rc = $sth->execute(parameter1, parameter2, ...);
# execute() has as many arguments as the prepared statement ?'s has unless(defined $rc) {
croak "SQL command failed: " . $dbh->errstr; } else {
# $rc rows had been effected, e.g. by UPDATE commands }

# 3. fetch results [if any] (again via its handle) while(my $result = $sth->fetchrow_arrayref) {
# ARRAY ref $result has one entry per column
# $result->[0] - first column, etc.
}
croak "Failed to get results from SQL command: "
. $dbh->errstr if $sth->err;
- -or-
while(my $result = $sth->fetchrow_hashref) {
# HASH ref $result has coumn_name => value pairs
# $result->{name1}, $name->{name2}, ...
}
croak "Failed to get results from SQL command: "
. $dbh->errstr if $sth->err;

# 4. finish DB transaction (via DB handle)
$dbh->commit() or die "Failed to save modified data: " . $dbh->errstr;
- -or-
$dbh->rollback() or die "Failed to discard modified data: " . $dbh->errstr;


nur wie sieht das im konkreten beispiel aus??? Knn mir da wer weiterhelfen?
nepos
 2007-05-22 13:55
#35520 #35520
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also, bei SELECTs benutze ich, je nachdem, was ich haben will, meistens die selectrow_... oder selectall_... Funktionen:
Code (perl): (dl )
my $aref = $dbh->selectall_arrayref(qq{SELECT ...},undef,$param1,...);

Fuer die Kommandos wie INSERT, UPDATE und DELETE nimmst du dann
Code (perl): (dl )
$dbh->do(...);
Bschorf
 2007-05-22 14:22
#35521 #35521
User since
2007-04-18
12 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
$dbh->do(...);


wie muss das da im genauen aussehen?
um zum beispeil einfach nen table anzulegen??

Einfach nur in den Klammern der SQL-Befehl?
Code: (dl )
$dbh->do(CREATE TABLE t_kontakte);


oder wie meinst du das?

und wie kann ich einfach mit select alles anzeigen lassen?
wofür stehen bei

Code: (dl )
my $aref = $dbh->selectall_arrayref(qq{SELECT ...},undef,$param1,...);

die ...... ???


danke schonmal
MisterL
 2007-05-22 21:29
#35522 #35522
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Guten Abend.

Also die SQL Anweisungen sollten lt. dieser Seite mit Gänsefüsschen erfolgen: $dbh->do("CREATE TABLE lii (
selectall_arrayref wird dort übrigens auch behandelt ;-)

Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
nepos
 2007-05-22 22:55
#35523 #35523
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Jo, Kommandos sind in dem Fall einfach Strings. Persönlich nehme ich statt " aber auch recht oft
Code: (dl )
qq{SELECT blafasel FROM blubb}
her.

Die ... sind halt die Platzhalter, wo du deinen Kram reinpacken musst.
<< >> 10 Einträge, 1 Seite



View all threads created 2007-05-21 11:26.