Mie May 09, 2007 4:43 am
|
 |
chelusan
Perlero Nuevo

|
Registrado: 09 May 2007
Mensajes: 7
|
|
| Conectarse a la base de datos |
|
|
Tengo que resolver algo que no actualiza bien en la base de datos. Es la primera vez que uso Perl. El archivo conectDB tiene como 3 formas de conectarse. Esto es lo que pone en el archivo
| Perl: | #!/usr/bin/perl -w
package ConectarDB;
use strict;
use DBI;
# variables a editar
my $db_user = "xxxxxx";
my $db_pass = "1234";
my $host_name = "xxxxx";
my $db_name = "1234";
my $db_name2 = "1234";
my $db_name3 = "xxxxxx";
my $q_string = "DBI:mysql:host=$host_name;database=$db_name";
my $q_string2 = "DBI:mysql:host=$host_name;database=$db_name2";
my $q_string3 = "DBI:mysql:host=$host_name;database=$db_name3";
sub connect{
return (DBI-> connect ($q_string, $db_user, $db_pass,
{PrintError => 0, RaiseError => 1}));
}
sub connect2 {
return (DBI-> connect ($q_string2, $db_user, $db_pass,
{PrintError => 0, RaiseError => 1}));
}
sub connect3 {
return (DBI-> connect ($q_string3, $db_user, $db_pass,
{PrintError => 0, RaiseError => 1}));
}
1; |
Más adelante se accede a la base de datos con el connect. Se actualiza un campo que sí funciona. Luego se conecta mediante connect2 y da fallos al modificar unos campos. ¿No es necesario desconectar y luego volver a conectar?, porque en el fichero éste no cierra la conexión hasta el final.
No tengo mucha idea de esto, tenerme paciencia.
gracias
Ultima edición por chelusan el Lun May 14, 2007 5:37 am, editado 1 vez |
|
|
|



Mie May 09, 2007 9:25 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4143
Ubicación: Valladolid, España
|
|
|
|
|
Las funciones de base de datos suelen devolver los errores en la variable $DBI::errstr, por lo que es posible saber porqué han fallado. Y la base de datos también se le puede indicar que genere un log de actividad.
El número de conexiones abiertas puede ser muy alto, pero depende del sistema operativo. La cuestión es que cada conexión se almacene en su variable escalar correspondiente.
Por ejemplo, en $dbh2 guardas una conexión a una base de datos. Mientras no la cierres, podrás preguntar y acceder a esa base de datos. |
|
Jue May 10, 2007 7:52 am
|
 |
monoswim
Vive para Perl en Español

|
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
|
|
|
|
|
Solo un detalle, ¿es correcto que el prepare de ese código lo hagas a dbh y no a dbh2?
Saludos |
|
Jue May 10, 2007 8:16 am
|
 |
chelusan
Perlero Nuevo

|
Registrado: 09 May 2007
Mensajes: 7
|
|
|
|
|
| si, cambiando eso tampoco me funciona |
|
Sab May 12, 2007 2:52 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4143
Ubicación: Valladolid, España
|
|
|
|
|
| Vaya... no me he dado cuenta del error hasta que lo he visto en el otro foro: estás usando comilla simple dentro del prepare. Ha de ser doble para que el valor de $distribuidor aparezca dentro de la sentencia sql, no '$distribuidor' de forma literal. |
|
Lun May 14, 2007 5:41 am
|
 |
chelusan
Perlero Nuevo

|
Registrado: 09 May 2007
Mensajes: 7
|
|
|
|
|
| gracias explorer, era justo por eso |
|
Powered by phpBB © 2001, 2005 phpBB Group
|