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.
main.c
#include <stdio.h> #include <stdlib.h> #include <libpq-fe.h> 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
#include <stdio.h> #include <stdlib.h> #include <libpq-fe.h> 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;
#include <stdio.h> #include <stdlib.h> #include <libpq-fe.h> 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; }
#include <stdio.h> #include <stdlib.h> #include <libpq-fe.h> 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; }
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.