Neste artigo vimos de forma bem simplificada e resumida como podemos interfacear o PostgreSQL através da linguagem C.
Muito mais pode ser feito com esta interface ao PostgreSQL além do que foi visto aqui, mas este artigo tem a intenção de ser apenas um pontapé para os muitos recursos que nos é oferecido pela Libpq.
#1Comentário enviado por cbov em 08/12/2005 - 04:16h
muito bom artigo.
eu imaginava ser mais complicado, pelo fato do unico banco que acessei usando C foi o oracle, qual tinha que dar algumas voltas ate gerar o binario
#2Comentário enviado por teovictor em 08/12/2005 - 12:00h
Se a intenção era ser um pontapé inicial, saiba que foi um pontapé certeiro. :) Muito bom para começar a usar o PostgreSQL em C e muito bem explicado.
#3Comentário enviado por bestlinux em 08/12/2005 - 13:12h
Parabéns pelo artigo...
Não sabia que o PostgreSQL "conversava" com C :-)
Muito interessante...
Falow !
#4Comentário enviado por Serafim em 08/12/2005 - 14:35h
Muito interessante o seu artigo. Não sabia que o PostgreSQL podia ser usado no C.
#5Comentário enviado por lennon.jesus em 09/12/2005 - 13:52h
Show de bola!
Gostei muito.
Quando tiver tempo vou testar!
Abraços,
Lennon Jesus
#6Comentário enviado por rjesus em 13/03/2007 - 11:19h
Olá, sou novo no linux, utilizoo o SUSE versão 10.1, tentei executar o exemplo que foi passado acima e obtive o seguinte resultado :
suse:/usr/include/pgsql # gcc $(pkg-config --libs --cflags gtk+-2.0) -g teste1.c
/tmp/ccc0dzwL.o: In function `main':
/usr/include/pgsql/teste1.c:13: undefined reference to `PQconnectdb'
/usr/include/pgsql/teste1.c:15: undefined reference to `PQstatus'
/usr/include/pgsql/teste1.c:28: undefined reference to `PQexec'
/usr/include/pgsql/teste1.c:21: undefined reference to `PQerrorMessage'
/usr/include/pgsql/teste1.c:22: undefined reference to `PQfinish'
/usr/include/pgsql/teste1.c:36: undefined reference to `PQresultStatus'
/usr/include/pgsql/teste1.c:42: undefined reference to `PQresultErrorMessage'
/usr/include/pgsql/teste1.c:45: undefined reference to `PQcmdTuples'
/usr/include/pgsql/teste1.c:53: undefined reference to `PQclear'
/usr/include/pgsql/teste1.c:59: undefined reference to `PQfinish'
collect2: ld returned 1 exit status
Alguêm poderia me ajudar ???
Obigado!
#7Comentário enviado por seferzohar em 06/11/2007 - 16:13h
rjesus
Vc esta compilando o exemplo com as flags erradas para o linker (ld)
pkg-config --libs --cflags gtk+-2.0 gera as flags necessarias para compilacao de programas gráficos utilizando a biblioteca gtk, desnecessária neste exemplo. Para compilar-lo vc precisa que o linker ligue o seu programa a biblioteca libpq, que implementa as funcoes acima.
O seu teste provavelmente irá compilar com o seguinte comando:
gcc -lpq -o teste1 teste1.c
#8Comentário enviado por albertguedes em 19/02/2008 - 19:41h
Quem estiver comproblemas de erro de compilação, criem um arquivo
'Makefile' e coloquem nele estas linhas
Eu testei e compila todos os código feito no artigo do Poleto, e ainda otimiza com a opção "-O".
Depois para compilar é só dar
$ make
no mesmo diretorio onde tenha o 'Makefile' e terá o programa compiladinho.
#9Comentário enviado por netmorais em 30/06/2008 - 16:04h
Poleto
Voce sabe se existe a biblioteca estática libpq para windows (libpq.a ...).
Instalei o Postgres 8.3 num xp e na pasta .../lib só encontro .dll.
Grato
Sergio.
netmorais@bol.com.br
#10Comentário enviado por poleto em 30/06/2008 - 18:13h
netmorais,
Nunca tentei utilizar a libpq a partir do windows.
Mas, acredito que não seja muito diferente, só que, ao invés de usar uma biblioteca com extensão .so, você vai usar uma dll. Se o nome não for o mesmo (libpq.dll, tente pq.dll). De resto, use o procedimento normal do desenvolvimento sobre windows para carregar a dll.
Abraços,
Luiz Poleto
#11Comentário enviado por fabiomattes2011 em 01/09/2008 - 17:52h
Esta biblioteca também funciona no c++, ou tem alguma outra?
#12Comentário enviado por poleto em 01/09/2008 - 17:54h
gelheadbanger,
Teoricamente, não existe motivos para não funcionar.
Qualquer coisa, só perguntar.
Abraços,
Luiz Poleto
#13Comentário enviado por fabiomattes2011 em 03/09/2008 - 16:20h
vo testar aqui com c++... qualquer posto aqui se funcionou... valeu poleto.
#14Comentário enviado por fabiomattes2011 em 03/09/2008 - 17:22h
Kra consegui conectar no c++ mais teve algumas alterações, segue abaxo o código que usei:
#include <iostream>
#include "libpq-fe.h"
using namespace std;
/* Conexão com o banco */
PGconn *conn = NULL;
int main()
{
/* realiza a conexão */
conn = PQconnectdb("host=localhost dbname=TESTE user=admin password=mnpinfo459");
eu imaginava ser mais complicado, pelo fato do unico banco que acessei usando C foi o oracle, qual tinha que dar algumas voltas ate gerar o binario