Barra laterale

programmazione:libpq:introduzione

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

Insert

#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;

Update

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

Delete

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

programmazione/libpq/introduzione.txt · Ultima modifica: 18/04/2018 - 15:49 (modifica esterna)