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

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

Usando MySQL na linguagem C

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++

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts