![]() | ![]() | ![]() | GNOME Data Access manual | ![]() |
---|
Each time we execute a normal query, we will obtain a <LINK><EMPHASIS>GdaDataModel </EMPHASIS></LINK> object, which is the way to see what the query returned. As <LINK>GdaDataModel</LINK> is an object, we can manage it with <LINK>GdaDataModel</LINK> class.
Before continuing, we must say that it is possible to modify a data model, but as we are accessing using SQL, it is not recommended to modify it, so modifications on the database must be done using SQL.
Let's see the functions we need:
<ITEMIZEDLIST> <LISTITEM><LINK>gda_data_model_get_n_rows()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_data_model_get_n_columns()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_data_model_describe_column()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_data_model_get_column_title()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_data_model_get_column_position()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_data_model_get_row()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_data_model_get_value_at()</LINK>
</LISTITEM> <LISTITEM><LINK>gda_row_get_value()</LINK>
</LISTITEM> </ITEMIZEDLIST>This functions are very easy to use, so let's see some clear examples:
This function accesses the data model by directly accessing cells (using <LINK>gda_data_model_get_value_at () </LINK>)
<PROGRAMLISTINGCO> <AREASPEC> <AREA></AREA> <AREA></AREA> <AREA></AREA> </AREASPEC>void show_table (GdaDataModel * dm) { gint row_id; gint column_id; GdaValue *value; 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++) { for (column_id = 0; column_id < gda_data_model_get_n_columns (dm); column_id++) { value = (GdaValue *) gda_data_model_get_value_at (dm, column_id, row_id); g_print ("%s\t", gda_value_stringify (value)); } g_print("\n"); } }<CALLOUTLIST> <CALLOUT> <PARA> Loop for writing column names. </PARA> </CALLOUT> <CALLOUT> <PARA> Double loop accessing values using <LINK>gda_data_model_get_value_at () </LINK> </PARA> </CALLOUT> <CALLOUT> <PARA> Data returned is a <LINK>GdaValue</LINK> object. </PARA> </CALLOUT> </CALLOUTLIST> </PROGRAMLISTINGCO>
This function accesses the data model by accessing rows (using <LINK>gda_data_model_get_row () </LINK> and <LINK> gda_row_get_value () </LINK>)
<PROGRAMLISTINGCO> <AREASPEC> <AREA></AREA> <AREA></AREA> <AREA></AREA> </AREASPEC><ANCHOR> void show_table2 (GdaDataModel * dm) { gint row_id; gint column_id; GdaValue *value; GdaRow *row; 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"); } } </ANCHOR><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> returns a <EMPHASIS>const <LINK>GdaValue</LINK></EMPHASIS>, so we do not have to free it. </PARA> </CALLOUT> </CALLOUTLIST> </PROGRAMLISTINGCO>
<< Processing queries | Managing values >> |