[caracas-pm] Consulta a Informix mediante Perl DBI

Alexis Arnal aarnal at me.gov.ve
Fri Sep 3 17:10:57 CDT 2004


Gracias, por la ayuda.

Ya pude conectarme a la base de datos Informix, sin embargo ahora me
surgió un problema al realizar una consulta.

A continuación les muestro el trozo de código conflictivo a ver si
alguien me ayuda a detectar la falla.

#----------------------------------------
if ($dbh=DBI->connect($driver,$user,$password)){
	print "*** Conectado ***\n";

	$statement=$dbh->prepare("SELECT nombre from tpersona where
cedula='12345678'")or die"\nError al preparar la operación\n";
	$statement->execute or die "\nError al ejecutar la operación";

	while (( $cedula,$nombre)=$statement->fetchrow_array){
		print " $cedula|$nombre|\n";
		}
	}else{
		print "*** Error en la conexión ***\n";
      }
#------------------------------------------
El problema se presenta en la línea donde se hace el prepare

al ejecutarlo me muestra lo siguiente:

*** Conectado a la base de datos ***
Error al preparar la operación

Otro problema es que al parecer no valida el usuario y el password, ya
que los cambie arbitrariamente y se seguía conectándose.

Estoy leyendo toda la documentación de DBD::Informix a ver si puedo
encontrar la falla.

			Atte. 
		Ing Alexis Arnal
		Caracas-Venezuela

El jue, 02-09-2004 a las 13:56, Ernesto Hernandez-Novich escribió:
> On Wed, 1 Sep 2004, Alexis Arnal wrote:
> > Saludos, estoy teniendo problemas al tratar de conectarme a una base de
> > datos Informix con Perl. Ya instale el SDK de Informix y pude instalar
> > el DBD::Informix y aparentemente todo salió bien, sin embargo cuando
> > corro el script de prueba me manda el siguiente error:
> >
> > ---------------------------------------------------------------------
> > DBI connect('dbname=drh;host='xx01';port='1234'','yo',...) failed: SQL:
> > -354: Incorrect database or cursor name format. at ./conexperl.pl
> > Error en la conexión
> > ------------------------------------------------------------------
> > Busque la descripción del error y me mostró lo siguiente:
> >
> > [root at m1344 ejemploperl]# finderr -354
> > -354    Incorrect database or cursor name format.
> >
> > This statement contains the name of a database or a cursor in some
> > invalid
> > format. If the statement is part of a program, the name might have been
> > passed in a host variable.
> 
> > $driver="dbi:Informix:dbname=$basedatos;host='xxx01';port='1234'";
> 
> La sintaxis del connect es incorrecta. El DBD::Informix no funciona
> con dbname, host ni port.
> 
> Si la base de datos 'foo' es local (misma máquina en la que corre el script),
> basta poner el nombre de la base de datos.
> 
> dbi:Informix:foo
> 
> Si la base de datos 'foo' es remota (en la máquina 'bar', diferente a la
> que corre el script), entonces la base de datos se indica como
> 
> dbi:Informix:foo at bar
> 
> y 'bar' debe haber sido ingresada en el archivo sqlhosts del cliente
> Informix en la máquina local.
> 
> Si la base de datos 'foo' es local _y_ está en Standard Engine (¡oh
> cielos! ¡actualicen!), se coloca el camino de acceso en el sistema
> de archivos.
> 
> dbi:Informix:/path/to/db/foo
> 
> Revisa el manual de DBD::Informix para más detalles, y consulta a tu
> experto Informix local para configurar el sqlhost y los permisos de
> acceso en la máquina remota.



More information about the caracas-pm mailing list