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: 73.219 ]

Por: Poleto em 01/06/2006


Inserindo, atualizando e apagando dados de tabelas



Agora que já sabemos como abrir uma conexão, vamos começar a trabalhar com as nossas tabelas.

O primeiro passo será inserir alguns dados na tabela. Como não há muito a ser dito, visto que basicamente trata-se de comandos SQL normais, vamos ao código (iremos omitir o código que realiza a conexão, uma vez que já o listamos lá em cima):

EXEC SQL BEGIN DECLARE SECTION;
   int i;
EXEC SQL END DECLARE SECTION;

EXEC SQL BEGIN WORK;

     for(i = 0; i < 10; i++) {

                EXEC SQL INSERT INTO contatos (id_contato, nome) VALUES(:i, 'Nome ' || :i );

            if(sqlca.sqlcode != 0) {
      printf(" Erro executando a query. ");
      printf("Descrição: %s ", sqlca.sqlerrm.sqlerrmc);
      }
}

EXEC SQL COMMIT WORK;

As novidades no fragmento de código acima são:

EXEC SQL BEGIN WORK e EXEC SQL COMMIT WORK

Com estes comandos, iniciamos e terminamos uma transação, respectivamente, o que torna o nosso INSERT muito mais rápido, pois o PostgreSQL só vai gravar os dados fisicamente na tabela quando ele encontrar o comando COMMIT WORK. Estes comandos sempre devem ser usados, a não ser que se use o comando EXEC SQL SET AUTOCOMMIT TO ON, o que faz com que a cada comando SQL executado o PostgreSQL execute o commit.

EXEC SQL INSERT INTO contatos (id_contato, nome) VALUES(:i, 'Nome ' || :i );

Este é o nosso INSERT, que vai gravar os dados na tabela contatos. O que deve ser observado aqui são os valores passados dentro de VALUES: :i - esta é a nossa variável declarada na seção de declaração. Esta é uma variável do C que está disponível para o PostgreSQL.

'Nome ' || :i - isso vai inserir um nome do tipo "Nome 1", "Nome 2", etc, de acordo com a nossa variável "i". Os dois "pipes" ( || ) é o caracter para concatenar strings no PostgreSQL.

Por fim, sqlca.sqlerrm.sqlerrmc irá mostrar a mensagem de erro, caso algum erro aconteça.

Os comandos de UPDATE e DELETE podem ser executados usando a mesma estrutura de código acima, uma vez que eles são semelhantes.

Página anterior     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 - Cursores

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

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

Acessando PostgreSQL com C

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts