Barra laterale

programmazione:libgda:introduzione

Introduzione a Libgda

Autore: Fabio Di Matteo
Ultima revisione: 19/02/2018 - 17:21

Select

main.c

#include <libgda/libgda.h>
#include <sql-parser/gda-sql-parser.h>
 
 
 
int
main (int argc, char *argv[])
{
	gda_init ();
 
	/* Apro la connessione */ 
	GdaConnection *cnc;
	GError *error = NULL;
	GdaSqlParser *parser;
 
	cnc = gda_connection_open_from_string ("PostgreSQL", "HOST=127.0.0.1;PORT=5432;DB_NAME=test;USERNAME=fabio;PASSWORD=fabio", NULL,
					   GDA_CONNECTION_OPTIONS_NONE,
					   &error);
	if (!cnc) {
			g_print ("Impossibile connettersi al database: %s\n",error->message);
			exit (1);
	}
 
	/* Creo un  SQL parser */
	parser = gda_connection_create_parser (cnc);
	if (!parser) parser = gda_sql_parser_new (); //se il parser fallisce la creazione ne creo uno di default
 
	/* Attacco il parser alla connessione */
	g_object_set_data_full (G_OBJECT (cnc), "parser", parser, g_object_unref);
 
 
 
 
	//Lancio una select
	GdaDataModel *data_model;
	GdaStatement *stmt;
	gchar *sql = "SELECT * from persone;";
 
	parser = g_object_get_data (G_OBJECT (cnc), "parser");
	stmt = gda_sql_parser_parse_string (parser, sql, NULL, NULL);
 
	//Popolo il data model
	data_model = gda_connection_statement_execute_select (cnc, stmt, NULL, &error);
	g_object_unref (stmt);
 
	if (!data_model) 
	{
		 g_error ("Non e' possibile nostrare il contenuto della tabella: %s\n",
					 error && error->message ? error->message : "Nessun dettaglio");
		 exit(1);
	}
 
	//Stampo il risultato della query
	const GValue *id;
	const GValue *Nome;
	const GValue *Cognome;
	const GValue *Email;
	for (int i = 0; i < gda_data_model_get_n_rows (data_model); i++) 
	{
 
		id = gda_data_model_get_value_at (data_model, 0, i, NULL);
		Nome = gda_data_model_get_value_at (data_model, 1, i, NULL);
		Cognome = gda_data_model_get_value_at (data_model, 2, i, NULL);
		Email = gda_data_model_get_value_at (data_model, 3, i, NULL);
 
		char* strId = gda_value_stringify(id);
		char* strNome = gda_value_stringify (Nome);
		char* strCognome = gda_value_stringify (Cognome);
		char* strEmail = gda_value_stringify (Email);
 
		g_print("%s %s %s %s \n", strId, strNome,strCognome,strEmail);
	}
 
 
	g_object_unref (data_model);
	gda_connection_close (cnc);
	g_object_unref (cnc);
 
 
	return 0;
}

makefile

all:
	gcc main.c -o main `pkg-config --cflags --libs libgda-5.0`

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