====== 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; }