• 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-13 20:32 @897

El de la conexión para automatizar va así, ¿verdad?. Donde le coloqué postgresql decía MYSQL. A ver si está bien el cambio...

#!/usr/bin/perl -w
package ConectarDB;
use strict;
use DBI;

# variables a editar
my $db_user = "javiandres";
my $db_pass = "251093";

my $host_name = "localhost";
my $db_name = "prueba";
# vars


my $q_string = "DBI:postgresql:host=$host_name;database=$db_name";


sub connect{
return (DBI->connect ($q_string, $db_user, $db_pass,
{PrintError => 0, RaiseError => 1}));
}

1;
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 explorer » 2013-08-14 07:57 @373

Te sobran unas cosas...
  • No necesitas la línea package, salvo que vayas a crear un package.
  • No necesitas la subrutina connect(). Solo necesitas hacer el connect. Fíjate en el ejemplo que te he escrito en mi último mensaje.
  • No es DBI:postgresql... es DBI:Pg. Por favor, prueba los ejemplos.
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

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

Notapor javiandres » 2013-08-14 08:30 @396

¡¡¡ Muchas Gracias !!!

Ya me conecto. Ahora debo aumentarle 'Wx'Perl para hacer las impresiones en interfaz gráfica y crear el CRUD :D
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 javiandres » 2013-08-14 11:24 @517

Estoy creando un listado de la base de datos en interfaz gráfica 'WxPerl'; mira mi código.

Sí me imprime en interfaz gráfica pero tengo varios registros y me aparecen subscritos (uno encima de otro). ¿Cómo podría hacer que haga el listado normal y no subscrito?

#!/usr/bin/perl -w
use warnings;
use strict;
use DBI;
use Wx;

package MyFrame;
use base 'Wx::Frame';

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";

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

sub new {
my $ref = shift;
my $self = $ref->SUPER::new( undef,-1,'LISTADO',[-1, -1],[200, 100],);
my $panel = Wx::Panel->new( $self,-1,);
my $etiqueta1 = Wx::StaticText->new( $panel,-1,'Nombres Apellidos',[10, 20],[-1, -1],);
while(my $ref = $sth->fetchrow_hashref()) {
my $etiqueta2 = Wx::StaticText->new( $panel,-1,"$ref->{'nombres'} $ref->{'apellidos'}\n",[10, 40],[-1, -1],);
}

return $self;
}

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

package main;
my $app = MyApp->new;
$app->MainLoop;

# clean up
$dbh->disconnect();
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-14 12:32 @563

Me atrevo a que puede ser así (no lo he probado):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my $etiqueta_txt = "Nombres Apellidos\n";
  2.     while(my $ref = $sth->fetchrow_hashref()) {
  3.         $etiqueta_txt .= "$ref->{'nombres'} $ref->{'apellidos'}\n";
  4.     }
  5.     my $etiqueta1 = Wx::StaticText->new( $panel, -1, $etiqueta_txt, [10, 20], [-1, -1],);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Es decir: primero recolectamos el texto, y luego lo asignamos a la etiqueta.

Buscando con Google, me encuentro con este ejemplo, así que también se podría hacer con el método SetLabel().

Una cosa: poner '-w' en la primera línea, es -casi- lo mismo que el 'use warnings;' que pones después, así que... te sobra.
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

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

Notapor javiandres » 2013-08-14 13:34 @607

Sí me funcionó, :mrgreen: y tienes razón con lo escrito abajo...

!Muchas Gracias!

De casualidad, ¿no sabes cómo crear enlaces para crear el CRUD de adicionar, modificar y eliminar en interfaz gráfica con WxPerl?
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-14 14:18 @637

No, no lo sé.
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

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

Notapor javiandres » 2013-08-14 15:04 @669

Ok, gracias por tu ayuda, explorer.
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 javiandres » 2013-08-21 08:11 @383

¿Qué significan estas líneas, 'fetchrow_hashref()', en este código?

while(my $ref = $sth->fetchrow_hashref()) {
$etiqueta_txt .= "$ref->{'nombres'} $ref->{'apellidos'}\n";
}
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-21 11:34 @523

fetchrow_hashref() es un método del paquete DBI, que recupera una fila de la tabla de resultados de la consulta hecha, y la transforma en un hash, cuyas claves son los nombres de los campos o columnas de la consulta, y los valores, los correspondientes a esa fila. El método devuelve una referencia a ese hash (por eso se llama hashref :) )

El bucle while(), recorre así todas las filas del resultado, y por cada una, va acumulando en la variable $etiqueta_txt el valor resultado de la unión de los valores de las claves 'nombres' y 'apellidos' del resultado, con un espacio en blanco en medio, y un fin de línea al final.

Vamos, que obtenemos un listado de nombres y apellidos.
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

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

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