====== Introduzione a Libgda ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//19/02/2018 - 17:21//** \\ \\
===== Select =====
**main.c**
#include
#include
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`