• Publicidad

Error CGI::Application::Plugin::DBH;

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Error CGI::Application::Plugin::DBH;

Notapor fjmn2001 » 2009-07-20 17:00 @750

Hola, amigos de Perl en Español, les escribo en esta oportunidad porque tengo problemas para conectarme con la bases de datos...

He logrado conectarme con la base de datos usando DBI, pero mi tutor académico quiere que utilice CGI::Application::Plugin::DBH y, bueno, me metí en CPAN pero los códigos que aparecen allí no me sirven pues, ¿podrían ayudarme a realizar el script?

Estos son los datos:
Sintáxis: [ Descargar ] [ Ocultar ]
  1. dbi:pg; 
  2. host=192.168.20.254; 
  3. dbname=sga; 
  4. usuario=adm_sga; 
  5. password=123; 


Ya probé con este script pero no me sirve, dice que el método dbh_config está indefinido...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use CGI::Application::Plugin::DBH(qw/dbh_config dbh/);
my $data_source = "DBI:Pg:host=192.168.20.254;dbname=sga";
my $usuario     = "adm_sga";
my $password    = "123";


$self->dbh_config($data_source, $usuario, $password);
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Esperará su pronta respuesta. De antemano muchas gracias...
fjmn2001
Perlero nuevo
Perlero nuevo
 
Mensajes: 29
Registrado: 2009-06-25 15:11 @674

Publicidad

Re: Error CGI::Application::Plugin::DBH;

Notapor kidd » 2009-07-20 17:21 @764

La idea es que lo utilices de la siguiente manera:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package MiCGI;
  2.  
  3. use base 'CGI::Application';
  4.  
  5. use strict;
  6. use CGI::Application::Plugin::DBH (qw/dbh_config dbh/);
  7.  
  8. sub cgiapp_init {
  9.  
  10.     my $self = shift;
  11.  
  12.     #Inicializar Database
  13.     $self->dbh_config("DBI:Pg:host=192.168.20.254;dbname=sga", "adm_sga", "123");
  14.  
  15.  
  16. }
  17.  
  18. sub teardown {
  19.  
  20.     my $self = shift;
  21.  
  22.     #Desconectarse del database
  23.     $self->dbh->disconnect();
  24.  
  25. }
  26.  
  27. sub setup{
  28.  
  29.     my $self = shift;
  30.  
  31.     $self->start_mode('inicio');
  32.     $self->mode_param('modo');
  33.  
  34.     $self->run_modes(
  35.           'inicio' => 'inicio',
  36.     );
  37.  
  38. }
  39.  
  40. sub inicio{
  41.  
  42.     my $self = shift;
  43.  
  44.     #Tomamos nuestro objeto DBI
  45.     my $dbh = $self->dbh();
  46.  
  47.     #... cualquier cosas que quieras hacer con tu database
  48.     return "Conectado...";
  49.  
  50. }
  51.  
  52. 1;
  53. __END__
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4



Y ya finalmente tu .cgi:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use CGI::Carp qw(fatalsToBrowser);
  5.  
  6. use MiCGI;
  7.  
  8. my $webapp = MiCGI->new();
  9.    $webapp->run();
  10.  
  11.  
  12. exit(1);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Para mayor información acerca de como usar el módulo CGI::Application lee el siguiente tutorial:
http://perlenespanol.com/tutoriales/cgi ... con_c.html
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: Error CGI::Application::Plugin::DBH;

Notapor fjmn2001 » 2009-07-20 21:25 @934

Muchas gracias, esto me ha servido de mucha ayuda...
fjmn2001
Perlero nuevo
Perlero nuevo
 
Mensajes: 29
Registrado: 2009-06-25 15:11 @674

Re: Error CGI::Application::Plugin::DBH;

Notapor fjmn2001 » 2009-07-20 23:43 @029

Una duda hermano, ¿es posible realizar la conexión fuera de las sub funciones? Con DBI, lo hacía pero con esto no sé cómo hacerlo pues... más o menos algo así.

package....

use...
use...

my...
my...

y aquí ¿realizar la conexión a la base de datos con dbh? Ya que me interesa que la conexión se haga en ese lugar, no me sirve dentro de ninguna sub función...

sub ....
fjmn2001
Perlero nuevo
Perlero nuevo
 
Mensajes: 29
Registrado: 2009-06-25 15:11 @674

Re: Error CGI::Application::Plugin::DBH;

Notapor kidd » 2009-07-21 07:48 @367

Si estás realizando tu aplicación con CGI::Application entonces no tienes razón por cual hacer tu conexión de otra manera, recuerda que la subrutina cgiapp_init se ejecuta siempre antes de tus subrutinas principales, la idea es que ahí pongas todo lo que será compartido por tus conexiones, la idea es la reusabilidad.

Si ves creas tu conexión y registras el objeto con tu aplicación base, así que tienes todas tus subrutinas accesos al objeto DBI sin mayor problema, lo cual es la mejor manera, pues en aplicaciones grandes, se deben de evitar las variables globales lo más posible.

Ahora, el módulo CGI::Application::Plugin::DBH, está creado con la intención de usarse como plugin de CGI::Application, así que no veo porque se te pediría que lo uses en otros casos, para ello simplemente usas directamente el módulo DBI, por ejemplo:
http://perlenespanol.com/tutoriales/bas ... abase.html

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: Error CGI::Application::Plugin::DBH;

Notapor fjmn2001 » 2009-07-21 14:34 @649

Fue lo que pensé, muchas gracias por la información...
fjmn2001
Perlero nuevo
Perlero nuevo
 
Mensajes: 29
Registrado: 2009-06-25 15:11 @674


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 2 invitados