La Web del Programador: Comunidad de Programadores
 
    Pregunta:  44249 - CONECTAR CON POSTGRESQL
Autor:  Mauricio Henao
Hola a todos.
Alguie me puede indicar como hago para conectar con PostGreSQL 8 desde VFP?

El PostGreSQL esta instalado en un servidor Linux, como hago para conectar?

En mi windows me conecta bien, pero con el Host de Localhost.

Espero puedan sacarme de este problema.

  Respuesta:  William Recinos
tienes que editar el archivo postgres.conf y escribir:
listen_addresses = '*'
en lugar del listen_addresses = 'localhost'

luego verifica que exista una linea asi en el pg_hba.conf:

host all all 192.168.1.0/24 trust

192.168.1.0/24 seria tu red que quieres permitir el uso de tus datos.

reinicia el servidor de postgres y ahora has una prueba en la linea de comandos escribe:
telnet 192.168.1.1 5432
tiene que contestar (192.168.1.1 si este fuese el servidor donde esta el postgres)

trust no es recomendable en produccion, deberias de hacerlo con md5 si planeas que sea un servidor en produccion. para esto tienes que hacer algo asi cuando creas tu base de datos:

createuser -s -E -P nombre_usuario
createdb -O nombre_usuario -U nombre_usuario nombre_basedatos

luego entra al psql y escribe:
CREATE SCHEMA nombre_esquema AUTHORIZATION nombre_usuario;

luego entra al pgAdmin y crea la conexion al servidor
tiene que mostrarte en la parte izquierda tu esquema y las tablas que has creado. si es asi entonces solamente resta que hagas una prueba en la ventana de consultas haciendo un select a una tabla indicando el nombre del esquema antes del nombre de la tabla o puedes hacer esto:

SET search_path TO nombre_esquema;
SELECT * FROM nombre_tabla;

el search_path es como que hicieras un SET DEFAULT TO nombre_ruta en tu VFP, entonces despues no necesitas estar escribiendo el nombre del esquema cada vez que necesites hacer un select, insert, update, delete, drop, create, etc.

espero haberte ayudado,

  Respuesta:  Marco Caliri
lo unico que hay que hacer es instalar los drivers ODBC de PostgreSQL y luego crear una conexion del tipo String especificando la dirección IP de tu Linux

  Respuesta:  William Recinos
ya revisaste la configuracion del postgres.conf y del pg_hba?.. en el primero tienes que permitir el puerto para que sea visto en otras pcs a parte del linux... y en el pg_hba tienes que dar permisos a tu red local para conectarse al pgsql.. si no haces esto no podras verlo desde el pgAdmin...

tambien tienes que revisar los permisos a la base de datos que has creado en el postgres.. proba un GRANT ALL PRIVILEGES a ver si con esto se soluciona...

saludos,

  Respuesta:  Marcelo Campra
Si podes ejecutar varias instruciones desde vfp en la db postgres y lo que no podes hacer es un select, fijate si lo haces de esta manera:
sqlexec(handle,'select * from nombre_schema.socios','csocios')
handle=controlador de conexion que te devuelve sqlconnect()
select * from nombre_schema.socios=consulta
csocios=nombre del cursor donde traes la consulta
*tene en cuenta que en la consulta hay que indicar el NOMBRE DE SCHEMA PUNTO NOMBRE DE LA TABLA
*Otra cosa que te puede estar sucediendo es, por lo ke vi en tu post que el nombre de schema debe ser si o si para trabajar con vfp "postgresql" sin las comillas asi se debe llamar tu schema, no me preguntes xke es solo un requerimineto de vfp al trabajar con postgres

  Respuesta:  Mauricio Henao Romero
Ya no necesito eso.
Resulta que ahora quieren que se conecte con Windows.

Ya hice el ODBC y la conexion:

vCadConexion="driver={PostgreSQL};server=localhost;uid=xxxxx;pwd=xxxx;database=admin"
vSqlConecta = sqlstringconnect(vCadConexion)

if vSqlConecta <=0
Response.Redirect( Session.Url( "index.afp" ))
else
Response.Redirect( Session.Url( "hermes.afp" ))
endif

Esto lo hago desde AFP.

PERO.....

No se porque desde el PgAdmin no me deja consultar tablas.

Hice un Schema llamado VFP, alli hay una tabla llamada TblPrueba, la cual tiene un campo NOMBRE.

Desde el Sql hago: select * from tblprueba y me sale:

ERROR: relation "tblprueba" does not exist

Sabes que sera?

Puedo crear tables, índices, y hacer muchas cosas, pero no he podido hacer un simple SELECT desde el PgAdmin.