1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Managing data models</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="index.html" title="GNOME Data Access manual">
<link rel="up" href="processing-queries.html" title="Processing queries">
<link rel="prev" href="processing-queries.html" title="Processing queries">
<link rel="next" href="manage-gdavalue.html" title="Managing values">
<meta name="generator" content="GTK-Doc V1.10 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="chapter" href="introduction.html" title="Introduction">
<link rel="chapter" href="architecture.html" title="libgda architecture">
<link rel="chapter" href="installation.html" title="Installation">
<link rel="chapter" href="connecting.html" title="Beginning">
<link rel="chapter" href="processing-queries.html" title="Processing queries">
<link rel="chapter" href="ch06.html" title="Transactions and batch processes">
<link rel="chapter" href="managing-errors.html" title="Managing errors">
<link rel="chapter" href="main_example.html" title="Full example">
<link rel="chapter" href="migration.html" title="Some formulae for migration from old version">
<link rel="chapter" href="libgda-api.html" title="Client API Reference">
<link rel="chapter" href="libgda-providers.html" title="GDA Providers">
<link rel="chapter" href="libgda-xql.html" title="XML Queries">
<link rel="chapter" href="libgda-reports.html" title="GDA Report Engine">
<link rel="appendix" href="fdl.html" title="Appendix A. GNU Free Documentation License">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
<td><a accesskey="p" href="processing-queries.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="processing-queries.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GNOME Data Access manual</th>
<td><a accesskey="n" href="manage-gdavalue.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="data-model"></a>Managing <span class="emphasis"><em>data models</em></span>
</h2></div></div></div>
<p>
Each time we execute a normal query, we will obtain a <a class="link" href="libgda-GdaDataModel.html" title="GdaDataModel"><span class="emphasis"><em>GdaDataModel
</em></span></a> object, which is the way to see what the query returned. As
<a class="link" href="libgda-GdaDataModel.html" title="GdaDataModel">GdaDataModel</a> is an object, we can manage it with <a class="link" href="libgda-GdaDataModel.html" title="GdaDataModel">GdaDataModel</a> class.
</p>
<p>
Before continuing, we must say that it is possible to modify a data model, but as we
are accessing using <a href="http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?query=SQL"><span class="acronym">SQL</span></a>, it is not recommended to modify it, so modifications on the
database must be done using <a href="http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?query=SQL"><span class="acronym">SQL</span></a>.
</p>
<p>
Let's see the functions we need:
</p>
<div class="itemizedlist"><ul type="disc">
<li><p>
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-get-n-rows" title="gda_data_model_get_n_rows ()">gda_data_model_get_n_rows()</a></p></li>
<li><p>
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-get-n-columns" title="gda_data_model_get_n_columns ()">gda_data_model_get_n_columns()</a></p></li>
<li><p>
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-describe-column" title="gda_data_model_describe_column ()">gda_data_model_describe_column()</a></p></li>
<li><p>
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-get-column-title" title="gda_data_model_get_column_title ()">gda_data_model_get_column_title()</a></p></li>
<li><p>
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-get-column-position" title="gda_data_model_get_column_position ()">gda_data_model_get_column_position()</a></p></li>
<li><p>
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-get-row" title="gda_data_model_get_row ()">gda_data_model_get_row()</a></p></li>
<li><p>
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-get-value-at" title="gda_data_model_get_value_at ()">gda_data_model_get_value_at()</a></p></li>
<li><p>
<a class="link" href="libgda-gda-row.html#gda-row-get-value" title="gda_row_get_value ()">gda_row_get_value()</a></p></li>
</ul></div>
<p>
This functions are very easy to use, so let's see some clear
examples:
</p>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="data-model-table-access"></a>Example using direct cell access</h3></div></div></div>
<p>
This function accesses the data model by directly accessing cells (using
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-get-value-at" title="gda_data_model_get_value_at ()">gda_data_model_get_value_at ()
</a>)
</p>
<div class="programlistingco">
<pre class="programlisting">
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++) {
char *str;
value = gda_data_model_get_value_at (dm, column_id, row_id);
str = gda_value_stringify (value);
g_print ("%s\t", str);
}
g_print("\n");
}
}
</pre>
<div class="calloutlist"><table border="0" summary="Callout list">
<tr>
<td width="5%" valign="top" align="left"><p><img src="images/callouts/1.png" alt="1" border="0"></p></td>
<td valign="top" align="left"><p>
Loop for writing column names.
</p></td>
</tr>
<tr>
<td width="5%" valign="top" align="left"><p><img src="images/callouts/2.png" alt="2" border="0"></p></td>
<td valign="top" align="left"><p>
Double loop accessing values using
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-get-value-at" title="gda_data_model_get_value_at ()">gda_data_model_get_value_at ()
</a>
</p></td>
</tr>
<tr>
<td width="5%" valign="top" align="left"><p><img src="images/callouts/3.png" alt="3" border="0"></p></td>
<td valign="top" align="left"><p>
Data returned is a <a class="link" href="libgda-gda-value.html" title="gda-value">GdaValue</a> object.
</p></td>
</tr>
</table></div>
</div>
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="data-model-row-access"></a>Example using row access</h3></div></div></div>
<p>
This function accesses the data model by accessing rows (using
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-get-row" title="gda_data_model_get_row ()">gda_data_model_get_row ()
</a> and
<a class="link" href="libgda-gda-row.html#gda-row-get-value" title="gda_row_get_value ()"> gda_row_get_value ()
</a>)
</p>
<div class="programlistingco">
<pre class="programlisting">
<a name="show_table2"></a>
</pre>
<div class="calloutlist"><table border="0" summary="Callout list">
<tr>
<td width="5%" valign="top" align="left"><p><img src="images/callouts/1.png" alt="1" border="0"></p></td>
<td valign="top" align="left"><p>
Loop for writing column names.
</p></td>
</tr>
<tr>
<td width="5%" valign="top" align="left"><p><img src="images/callouts/2.png" alt="2" border="0"></p></td>
<td valign="top" align="left"><p>
Outer loop obtaining rows using
<a class="link" href="libgda-GdaDataModel.html#gda-data-model-get-row" title="gda_data_model_get_row ()">gda_data_model_get_row ()
</a>
</p></td>
</tr>
<tr>
<td width="5%" valign="top" align="left"><p><img src="images/callouts/3.png" alt="3" border="0"></p></td>
<td valign="top" align="left"><p>
Inner loop obtaining the value using
<a class="link" href="libgda-gda-row.html#gda-row-get-value" title="gda_row_get_value ()">gda_row_get_value ()
</a>. Notice that <a class="link" href="libgda-gda-row.html#gda-row-get-value" title="gda_row_get_value ()">gda_row_get_value ()</a>
returns a <span class="emphasis"><em>const <a class="link" href="libgda-gda-value.html" title="gda-value">GdaValue</a></em></span>, so we
do not have to free it.
</p></td>
</tr>
</table></div>
</div>
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="data-model-free"></a>Freeing data models</h3></div></div></div>
<p>
When you finish using data models you must free it, but GdaDataModel class
does not have a function to do it, so you have to use <span class="emphasis"><em>g_object_unref
()</em></span>.
</p>
</div>
</div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.10</div>
</body>
</html>
|