PostgreSQL - Embutindo comandos SQL no seu código C

Existe uma alternativa ao uso de bibliotecas para acesso ao PostgreSQL, que é a inclusão de comandos SQL dentro do próprio código em C. Veremos neste artigo como fazer esta integração.

[ Hits: 68.209 ]

Por: Poleto em 01/06/2006


Introdução



O método conhecido como Embedded SQL (ou SQL embutido) é definido pelo ANSI (American National Standards Institute) e define um conjunto de padrões para que código SQL possa ser usado a partir de programas feitos em outras linguagens de programação, que no nosso caso será o C.

A implementação do PostgreSQL para este conceito é chamado de ECPG. Todo o código SQL contido no programa em C é pré-processado antes por um pré-processador do PostgreSQL, que irá fazer a tradução para código C comum, para então ser compilado por um compilador C.

Este método tem algumas vantagens com relação a outros métodos, comparando aqui com a libpq, entre elas:
  • O gerenciamento de variáveis que irão receber valores retornados por queries é muito mais fácil do que na libpq.
  • Toda sintaxe do SQL é verificada, o que permite que erros desse tipo sejam corrigidos antes de o programa ser de fato compilado.
  • O embedded SQL é definido pelo padrão ANSI, e como o PostgreSQL segue o mais próximo o possível estes padrões, é muito mais fácil portar estes programas para outros bancos de dados.

E claro, nem tudo é vantagem. Entre as desvantagens deste método podemos citar:
  • A depuração do programa pode ser mais complicada, pois o arquivo é pré-processado antes de o compilador C entrar em ação, ou seja, erros do compilador podem ser mais difíceis de encontrar.
  • Deve-se saber antecipadamente a estrutura das tabelas quando for usar comandos SELECT.

Claro, nada é perfeito, e em todas as situações deve ser analisado qual a melhor solução a ser usada.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Criando o ambiente de testes
   3. Iniciando com o ECPG
   4. Conectando com o servidor de banco de dados
   5. Compilando os programas
   6. Inserindo, atualizando e apagando dados de tabelas
   7. Retornando dados de tabelas
   8. Considerações Finais
Outros artigos deste autor

Acessando PostgreSQL com C - Cursores

Acessando PostgreSQL com C

Instalando o CMS Drupal 4.7

Leitura recomendada

Acessando PostgreSQL com C

Embutindo um banco de dados SQLite em sua aplicação C++

Ensaio acerca de bibliotecas de código aberto para abstração de acesso a banco de dados em linguagem C++

Acessando PostgreSQL com C - Cursores

Usando MySQL na linguagem C

  
Comentários
[1] Comentário enviado por marcolinux em 07/06/2006 - 17:11h

Parece que foi DEUS que mandou vc postar este artigo!

Estou justamente sofrendo aqui usando a libpq !


Parabéns pelo material.

MARCOLINUX

[2] Comentário enviado por faustojacome em 10/03/2008 - 23:43h

Apos quebrar muito a cabeca para funcionar no Debian com o PostgreSQL e o ecpg via apt-get aqui vai a forma que consegui compilar.

gcc -g -I/usr/include/postgresql/ -o saida postgreSQL.c -L/usr/lib/postgresql/8.3/lib/ -lecpg -lpq

[3] Comentário enviado por benwin em 28/10/2009 - 07:28h

Porque eu não posso usar variáveis no campo FROM?

EXEC SQL SELECT usuario, senha INTO :varusuario, :varsenha FROM :tabelabd WHERE usuario = :meunumerodb;

Existe alguma forma de burlar isso?

Abraço!


Contribuir com comentário