====== Introduzione a libpq ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//21/02/2018 - 18:46//** \\ \\
Libpq è l'interfaccia C ufficiale di postgresql. Qui ne vedremo l'utilizzo di base.
===== Select =====
**main.c**
#include
#include
#include
int main(int argc, char** argv)
{
//Mi connetto al mio database
PGconn *conn = NULL;
conn = PQconnectdb("user=fabio password=fabio dbname=test hostaddr=192.168.1.4 port=5432");
if (PQstatus(conn) != CONNECTION_OK)
{
printf("Connessione al db fallita!\n");
PQfinish(conn);
exit(1);
}else{
printf("Connessione avvenuta con successo.\n\n");
}
//eseguo una select
PGresult *res = PQexec(conn, "select * from persone");
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
fprintf(stderr, "Errore nella query: %s", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(1);
}
//numero di colonne della query
int nFields = PQnfields(res);
//Stampo i nomi delle colonne della query (opzionale)
for (int i = 0; i < nFields; i++) printf("%-15s", PQfname(res, i));
printf("\n");
// Stampo a video i record
for (int i = 0; i < PQntuples(res); i++) //PQntuples(res) è il numero dei record
{
for (int j = 0; j < nFields; j++) printf("%-15s", PQgetvalue(res, i, j));
printf("\n");
}
//Chiudo la connessione
PQclear(res);
PQfinish(conn);
return 0;
}
**makefile**
all:
gcc main.c `pkg-config --libs --cflags libpq` -o testPq
===== Insert =====
#include
#include
#include
int main(int argc, char** argv)
{
//Mi connetto al mio database
PGconn *conn = NULL;
conn = PQconnectdb("user=fabio password=fabio dbname=test hostaddr=192.168.1.4 port=5432");
if (PQstatus(conn) != CONNECTION_OK)
{
printf("Connessione al db fallita!\n");
PQfinish(conn);
exit(1);
}else{
printf("Connessione avvenuta con successo.\n\n");
}
//eseguo una insert
PGresult *res = PQexec(conn, "insert into persone (nome, cognome, email) values ('Bis','Lapard','bis@gatto.it');");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "Errore nella query: %s", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(1);
}
//Chiudo la connessione
PQclear(res);
PQfinish(conn);
return 0;
===== Update =====
#include
#include
#include
int main(int argc, char** argv)
{
//Mi connetto al mio database
PGconn *conn = NULL;
conn = PQconnectdb("user=fabio password=fabio dbname=test hostaddr=192.168.1.4 port=5432");
if (PQstatus(conn) != CONNECTION_OK)
{
printf("Connessione al db fallita!\n");
PQfinish(conn);
exit(1);
}else{
printf("Connessione avvenuta con successo.\n\n");
}
//eseguo una update
PGresult *res = PQexec(conn, "update persone set nome='Fabio', cognome='Di Matteo' where id=1;");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "Errore nella query: %s", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(1);
}
//Chiudo la connessione
PQclear(res);
PQfinish(conn);
return 0;
}
===== Delete =====
#include
#include
#include
int main(int argc, char** argv)
{
//Mi connetto al mio database
PGconn *conn = NULL;
conn = PQconnectdb("user=fabio password=fabio dbname=test hostaddr=192.168.1.4 port=5432");
if (PQstatus(conn) != CONNECTION_OK)
{
printf("Connessione al db fallita!\n");
PQfinish(conn);
exit(1);
}else{
printf("Connessione avvenuta con successo.\n\n");
}
//eseguo una delete
PGresult *res = PQexec(conn, "delete from persone where id=7 ;");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "Errore nella query: %s", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(1);
}
//Chiudo la connessione
PQclear(res);
PQfinish(conn);
return 0;
}