• Publicidad

Cómo conectarme a la base de datos en 'Perl'

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Cómo conectarme a la base de datos en 'Perl'

Notapor javiandres » 2013-08-23 20:37 @901

Ok, muchas gracias. Totalmente entendido :D
javiandres
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2013-07-24 19:27 @852

Publicidad

Re: Cómo conectarme a la base de datos en 'Perl'

Notapor javiandres » 2013-08-28 12:06 @546

Tengo el siguiente código. A la derecha se encuentra un formulario para la adición y en el lado izquierdo está el listado de respectivo formulario. Cuando lleno los campos en el formulario y doy clic en el botón de adicionar, me adiciona en la base de datos, pero no me actualiza el listado y tampoco queda el formulario en blanco para hacer otra adición. ¿Me podrían ayudar?

#!/usr/bin/perl
use warnings;
use strict;
use DBI;
use Wx;
package MyFrame;
use base 'Wx::Frame';
use Wx::Event qw(EVT_BUTTON);
use Switch;

my $dbh = DBI->connect("DBI:Pg:dbname=pruebaperl;host=localhost", "javiandres","251093", {PrintError => 0, RaiseError => 1}) or die "ERROR al conectar con la base datos: $DBI::errstr\n";

my $sth = $dbh->prepare("SELECT id, nombres, apellidos FROM personas");
$sth->execute();

sub new {
my $ref = shift;
my $self = $ref->SUPER::new( undef,-1,'ADICIONAR',[-1, -1],[500, 200],);
my $panel = Wx::Panel->new( $self,-1,);
my $etiqueta1 = Wx::StaticText->new( $panel,-1,'Id',[200, 20],[-1, -1],);
$self->{txtNumero1} = Wx::TextCtrl->new( $panel,0,'',[280, 20],[-1, -1],);
my $etiqueta2 = Wx::StaticText->new( $panel,1,'Nombres',[200, 40],[-1, -1],);
$self->{txtNumero2} = Wx::TextCtrl->new( $panel,2,'',[280, 40],[-1, -1],);
my $etiqueta3 = Wx::StaticText->new( $panel,1,'Apellidos',[200, 60],[-1, -1],);
$self->{txtNumero3} = Wx::TextCtrl->new( $panel,2,'',[280, 60],[-1, -1],);
my $BtnAdicionar = Wx::Button->new( $panel,1,'Adicionar',[200, 100],[-1, -1],);
EVT_BUTTON($self, $BtnAdicionar, \&OnClick );

my $etiqueta_txt = "Id |Nombres | Apellidos|\n";
while(my $ref = $sth->fetchrow_hashref()) {
$etiqueta_txt .= "$ref->{'id'} $ref->{'nombres'} $ref->{'apellidos'}\n";
}
my $etiqueta = Wx::StaticText->new( $panel, -1, $etiqueta_txt, [10, 20], [-1, -1],);
return $self;
}

sub OnClick {
my( $self, $event ) = @_;
my $id=$self->{txtNumero1}->GetValue();
my $nombres=$self->{txtNumero2}->GetValue();
my $apellidos=$self->{txtNumero3}->GetValue();

my $rows = $dbh->do("INSERT INTO personas (id, nombres, apellidos) VALUES ($id,'$nombres', '$apellidos')");

$dbh->disconnect();
}

package MyApp;
use base 'Wx::App';
sub OnInit {
my $frame = MyFrame->new;
$frame->Show( 1 );
}

package main;
my $app = MyApp->new;
$app->MainLoop;
javiandres
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2013-07-24 19:27 @852

Re: Cómo conectarme a la base de datos en 'Perl'

Notapor explorer » 2013-08-30 10:59 @499

En el OnClick(), después de hacer el INSERT, deberías "refrescar" o "redibujar" el componente de la lista, y poner a cero el contenido de las dos cajas, asignándoles un valor vacío, con el método SetValue().

Lamentablemente, no sé hacer lo del "refresco".

Bueno, ahora que lo pienso, tampoco sé si al hacer el SetValue de las dos cajas, también hay que refrescarlas... a lo mejor tienes que hacer un solo refresco, de todo el $panel.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados