| GNOME Data Access manual |
|---|
Values returned by functions of managing data are <LINK>GdaValue</LINK> objects. <LINK>GdaValue</LINK> class has many functions to access data, so we show the most important ones of them:
<ITEMIZEDLIST> <LISTITEM><LINK>gda_value_free()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_value_is_null()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_value_copy()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_value_compare()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_value_stringify()</LINK>
</LISTITEM> </ITEMIZEDLIST>There are many functions to know what is the type of a value and to manage values, that can be seen in <LINK>GdaValue</LINK> class.
We will return to the examples about last section to notice some important details:
<PROGRAMLISTINGCO> <AREASPEC> <AREA></AREA> <AREA></AREA> <AREA></AREA> <AREA></AREA> </AREASPEC>
void
show_table2 (GdaDataModel * dm)
{
gint row_id;
gint column_id;
GdaValue *value;
GdaRow *row;
gchar *string;
for (column_id = 0; column_id < gda_data_model_get_n_columns (dm);
column_id++)
g_print("%s\t",gda_data_model_get_column_title (dm, column_id));
g_print("\n");
for (row_id = 0; row_id < gda_data_model_get_n_rows (dm); row_id++) {
row = (GdaRow *) gda_data_model_get_row (dm, row_id);
for (column_id = 0; column_id < gda_data_model_get_n_columns (dm);
column_id++) {
value = gda_row_get_value (row, column_id);
string=gda_value_stringify (value);
g_print ("%s\t", string);
g_free(string);
}
g_print ("\n");
}
}
<CALLOUTLIST>
<CALLOUT>
<PARA>
Loop for writing column names.
</PARA>
</CALLOUT>
<CALLOUT>
<PARA>
Outer loop obtaining rows using
<LINK>gda_data_model_get_row ()
</LINK>
</PARA>
</CALLOUT>
<CALLOUT>
<PARA>
Inner loop obtaining the value using
<LINK>gda_row_get_value ()
</LINK>. Notice that <LINK>gda_row_get_value ()
</LINK> doesn't return a
<EMPHASIS>const <LINK>GdaValue</LINK></EMPHASIS>, so we
have to free it.
</PARA>
</CALLOUT>
<CALLOUT>
<PARA>
We have the difference here. As you can see above, <LINK>gda_value_stringify ()</LINK> does not return a
<EMPHASIS>const</EMPHASIS> gchar *, so you have to free it. First way is quite
attractive but it is not good.
</PARA>
</CALLOUT>
</CALLOUTLIST>
</PROGRAMLISTINGCO>| << Managing data models | Transactions and batch processes >> |