Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Error CGI::Application::Plugin::DBH; Responder al tema
Nuevo tema


Página 1 de 1  [ 6 mensajes ] 
 
Nota 2009-07-20 17:00 @750

Perlero Nuevo
Registrado: 2009-06-25 15:11 @674
Mensajes: 27
Error CGI::Application::Plugin::DBH;
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:
Syntax: [ Download ] [ Hide ]
  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...

Syntax: [ Download ] [ Hide ]
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);


Esperará su pronta respuesta. De antemano muchas gracias...


Nota 2009-07-20 17:21 @764
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Re: Error CGI::Application::Plugin::DBH;
La idea es que lo utilices de la siguiente manera:

Syntax: [ Download ] [ Hide ]
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__



Y ya finalmente tu .cgi:

Syntax: [ Download ] [ Hide ]
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);


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


Nota 2009-07-20 21:25 @934

Perlero Nuevo
Registrado: 2009-06-25 15:11 @674
Mensajes: 27
Re: Error CGI::Application::Plugin::DBH;
Muchas gracias, esto me ha servido de mucha ayuda...


Nota 2009-07-20 23:43 @029

Perlero Nuevo
Registrado: 2009-06-25 15:11 @674
Mensajes: 27
Re: Error CGI::Application::Plugin::DBH;
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 ....


Nota 2009-07-21 07:48 @367
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Re: Error CGI::Application::Plugin::DBH;
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


Nota 2009-07-21 14:34 @649

Perlero Nuevo
Registrado: 2009-06-25 15:11 @674
Mensajes: 27
Re: Error CGI::Application::Plugin::DBH;
Fue lo que pensé, muchas gracias por la información...


Responder al tema  [ 6 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO