• Publicidad

Contactar base de datos sybase

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

Contactar base de datos sybase

Notapor Kiloko » 2007-07-31 18:23 @807

Después de aprender Sybase, ( casi casi o lo que es igual a leer como 4 libros) de plano veo que la solución va a estar en Perl...

En fin. Necesito conectarme a una base de datos Sybase, para lo cual tengo el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
package conectarsb;

use strict;
use DBI;
use DBD::Sybase;

# variables a editar
my $db_user = "sybase";
my $db_pass = "sybase";
my $host_name = "El numero Fantasma";
my $db_name = "iMapAlarmDB ";
my $q_string = "DBD:Sybase=$host_name;database=$db_name";
sub connect
{
    return (sb->connect ($q_string, $db_user, $db_pass, {PrintError => 0, RaiseError => 1}));
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ejecuto este archivo y todo bien, no me manda error, pero tampoco me manda nada... recuerdo que alguien posteó algo sobre ingresar un print para saber si se conectó o no... y diría que se pondría por aquí:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
{
    return (sb->connect ($q_string, $db_user, $db_pass, {PrintError => 0, RaiseError => 1}));
    print "Se conecto/n";
}
1;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


... pero no aparece nada... bueno, después de esto creo mi programa para sacar información, y bueno, continúa después el sacar la información y después guardarla en un TXT, pero ando bien norteado... ¿alguien que me pueda decir más o menos por dónde va la cosa? :?:
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Publicidad

Notapor Kiloko » 2007-07-31 18:24 @808

Por cierto, ¿es forzoso que para conectarse a una base de datos tenga que tener el puerto?, ¿qué otras opciones tengo para sacar la información desde otro equipo?, ¿algún programa o algo?
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-08-01 04:18 @220

Sólo te queda leerte el manual del DBI. Bueno, como es muy largo, te vale con ver la sinopsis.

Busca en este foro por mensajes y tutoriales de acceso a base de datos. El enlace a los tutoriales lo tienes en esta página, arriba del todo.
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

Notapor Kiloko » 2007-08-14 10:13 @467

Listo, ya quedó. El problema aquí era el puerto, (del post que puse bajo el nombre de Huawei) Aquí el problema era del servicio que tenía el puerto restringido...

Saludos...
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor Kiloko » 2007-08-27 17:23 @766

Ahora bien, para no abrir otro post, ya que se relaciona con el tema, leyendo el tutorial me encuentro con un ejemplo para contactar mi base de datos y correr un query, pero me manda este error.
Código: Seleccionar todo
$ perl DB.pl
Can't locate object method "connect" via package "ConectarDB" at DB.pl line 4.


Este es mi archivo DB.pl:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
package ConectarDB;
my $campo = "perl";
my($dbh,$sth);
$dbh = ConectarDB->connect();
$sth = $dbh->prepare('INSERT INTO tabla campo = ?') or die("Couldn't prepare statement:". $dbh->errstr);
$sth->execute($campo) or die("Couldn't execute statement: " . $sth->errstr);
$sth->finish;
$dbh->disconnect;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Este es mi archivo ConectarDB:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
package ConectarDB;
use strict;
use DBI;
# variables a editar
my $db_user = "XXXXx";
my $db_pass = "uno_por_hay";
my $host_name = "localhost";
my $db_name = "dnet";
my $q_string = "DBI:oracle:host=$host_name;database=$db_name";
sub connect
{
return (DBI->connect($q_string, $db_user, $db_pass,{PrintError => 0, RaiseError => 1}));
}
1;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Quiero pensar yo que falta el módulo en el equipo y por eso no lo puede leer. ¿Qué opinan?
Última edición por Kiloko el 2008-10-22 14:15 @635, editado 1 vez en total
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-08-27 17:36 @775

¿La primera palabra de DB.pl no debería ser 'use' en lugar de 'package'?
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

Notapor Kiloko » 2007-08-27 17:46 @782

Efectivamente. En ese caso, OJO para quien pueda modificar ese tutorial de "Cómo conectarte a tu database" por Uriel Lizama.

Y a hora presenta el siguiente problema:

Código: Seleccionar todo
install_driver(oracle) failed: Can't locate DBD/oracle.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.5/sun4-solaris /usr/local/lib/perl5/5.8.5 /usr/local/lib/perl5/site_perl/5.8.5/sun4-solaris /usr/local/lib/perl5/site_perl/5.8.5 /usr/local/lib/perl5/site_perl .) at (eval 1) line 3.
Perhaps the DBD::oracle perl module hasn't been fully installed,
or perhaps the capitalisation of 'oracle' isn't right.
Available drivers: DBM, ExampleP, File, Oracle, Proxy, Sponge.
 at ConectarDB.pm line 16


En este caso hace falta el módulo, ¿cierto?
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-08-27 18:10 @798

El tutorial de Uriel lo veo bien... pone 'use' en el programa que usa el módulo...

En cuanto al error, lo dice en esta línea: "Perhaps the DBD::oracle perl module hasn't been fully installed,
or perhaps the capitalisation of 'oracle' isn't right.", que traducido es: "Quizás el módulo DBD::oracle no se ha instalado correctamente o quizás las mayúsculas/minúsculas de 'oracle' no sean las correctas".

Efectivamente, es DBD::Oracle, no DBD::oracle.

Donde pones "DBI:oracle" debería ser "dbi:Oracle".
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

Notapor Kiloko » 2007-08-27 18:17 @804

OK

A ver, creo que aquí es donde me confundo.

¿Es package Conectar DB y también use? mi confusión se genera porque en esta parte del tutorial dice:

Nuestro módulo
Ahora si ya que tenemos todo listo, vamos a crear nuestro módulo para automatizar lo que sería el código necesario para abrir una conexión a nuestro database.

Vamos a ver el código completo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
package ConectarDB;
use strict;
use DBI;

# variables a editar
my $db_user = "usuario_database";
my $db_pass = "pwd_database";

my $host_name = "host_database";
my $db_name = "nombre_database";
# vars


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


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

1;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y en esa parte dice package y, ok, después dice use...
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-08-27 19:34 @857

En el 'package ConectarDB' es donde se define 'connect' y es en el programa DB, con 'use ConectarDB', donde lo llamamos.
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

Siguiente

Volver a Básico

¿Quién está conectado?

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