[pgsql-ayuda] ayuda con la API de C

Heron GALLEGOS gallegos@csxxi.net.mx
Thu, 9 Nov 2000 14:32:30 -0600 (CST)


Soy nuevo en esta lista... un saludo a todos.

Hice un programa ejemplo escrito en C para
ver el contenido de una tabla de una base de datos.
Mi programa funcionaba bien hasta que se me ocurro
abrir un archivo local para escribir cada renglon
leido de la tabla.

El programa viene al final de este mensaje.

Le pongo comentarios al "fopen/fprintf/fclose"
y el programa vuelve a trabajar bien.

Lo curioso del asunto es que cuando lo compilo
sin los comentarios y lo corro, el programa se sale
por la ruta PQconnectdb/PQstatus con los siguientes
mensajes

temporal=/tmp/sm_data.00777
info=dbname=horde host=mango.sub.dominio.edu.mx port=5432 user=hordemgr
password=hordemgr
Conexion a dbms falla
fe_sendauth: no password supplied

Todos los fprintf que tiene los puse para debuguear.

A alguien le ha pasado algo parecido?
Alguien sabe de restricciones para PQconnectdb ?

Reciban un saludo

Heron Gallegos
Centro Siglo XXI - Informatica Educativa
Saltillo, Coah., Mexico

NetBSD-1.5_BETA
PostgreSQL 7.0.2

#include	<stdio.h>
#include	<string.h>
#include	<pgsql/libpq-fe.h>

#define	HOST	"mango.sub.dominio.edu.mx"
#define PORT	"5432"
#define USER	"hordemgr"
#define	PASS	"hordemgr"
#define	DBNAME	"horde"

#define	FMT1	"dbname=%s host=%s port=%s user=%s password=%s"
#define	QRY1	"SELECT sm_lhs, sm_rhs from sm_data"

main () {
	PGconn		*dbp;
	PGresult	*result;
	FILE		*fp;
	char		dbinfo [ 64 ], lhs [ 64 ], rhs [ 64 ], filnam [ 64 ];
	int		i, ntuples;

	sprintf ( dbinfo, FMT1, DBNAME, HOST, PORT, USER, PASS );
	sprintf ( filnam, "/tmp/sm_data.%05d", getpid ());

	fprintf ( stdout, "temporal=%s\n", filnam );
	fprintf ( stdout, "info=%s\n", dbinfo );

	/*
	if (( fp = fopen ( filnam, "w" )) == NULL ) {
		fprintf ( stderr, "No puedo abrir %s\n", filnam );
		exit ( 1 );
	}
	*/

	dbp = PQconnectdb ( dbinfo );
	if ( PQstatus ( dbp ) != CONNECTION_OK ) {
		fprintf ( stderr, "Conexion a dbms falla\n" );
		fprintf ( stderr, "%s\n", PQerrorMessage ( dbp ));
		PQfinish ( dbp );
		exit ( 1 );
	}
	result = PQexec ( dbp, QRY1 );
	fprintf ( stdout, "status=%s\n", PQresStatus ( PQresultStatus ( result )));

	if ( PQresultStatus ( result ) != PGRES_TUPLES_OK ) {
		fprintf ( stderr, "QRY1 ha fallado\n" );
		fprintf ( stderr, "%s\n", PQresStatus ( PQresultStatus ( result )));
		PQclear ( result );
		PQfinish ( dbp );
		exit ( 1 );
	}
	ntuples = PQntuples ( result );
	fprintf ( stdout, "Se leyeron %d tuples\n", ntuples );
	for ( i = 0; i < ntuples; i++ ) {
		strncpy ( lhs, PQgetvalue ( result, i, 0 ), 64 ); lhs [ 63 ] = 0;
		strncpy ( rhs, PQgetvalue ( result, i, 1 ), 64 ); rhs [ 63 ] = 0;
		trimsp ( lhs );
		trimsp ( rhs );
		fprintf ( stdout, "tuple %d\t", i );
		fprintf ( stdout, "%s\t", lhs );
		fprintf ( stdout, "%s\n", rhs );
		/* fprintf ( fp, "%s:%s\n", lhs, rhs ); */
	}
	PQclear ( result );
	/*
	fclose ( fp );
	*/

	PQfinish ( dbp );
	exit ( 0 );
}

trimsp ( char *s ) {
	while ( *s ) s++;
	s--;
	while ( *s == ' ' ) *s-- = 0;
}

--------- Pie de mensaje -------------------------------------------
Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : unsubscribe pgsql-ayuda