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.