[gnome-db] Patch for parameters and doc
- From: Xabier Rodríguez Calvar <xrcalvar igalia com>
- To: GDA <gnome-db-list gnome org>
- Subject: [gnome-db] Patch for parameters and doc
- Date: Tue, 29 Apr 2003 13:14:28 +0200
I send the patch for the GdaParameter class and some bugs in the doc.
The changes to the GdaParameter class are only change the gda_parameter_new
signature and to remove some checkings for null because we have the checking
in every set method, so sometimes we didn't need them. The change in the
signature method is only to get a GdaValue instead of a GdaValueType.
I haven't compiled the library but if if has any error, I'm sure that it's
not very difficult to fix it. And if anybody finds a broken link in the doc,
or something, tell me it.
Byes!
--
Xabier Rodríguez Calvar
Igalia S.L.
? patch.diff
Index: doc/C/libgda-docs.sgml
===================================================================
RCS file: /cvs/gnome/libgda/doc/C/libgda-docs.sgml,v
retrieving revision 1.39
diff -u -r1.39 libgda-docs.sgml
--- doc/C/libgda-docs.sgml 13 Dec 2002 17:33:41 -0000 1.39
+++ doc/C/libgda-docs.sgml 29 Apr 2003 11:07:31 -0000
@@ -982,46 +982,53 @@
LINKEND="gda-main-quit">gda_main_quit()</LINK> in order to finish the program.
</para>
<PROGRAMLISTING>
- void
- do_stuff ()
- {
- GdaClient *client;
- GdaConnection *connection;
-
- list_providers ();
- list_datasources ();
-
- client = gda_client_new ();
-
- g_print ("CONNECTING\n");
- connection = gda_client_open_connection (client, "calvaris", NULL, NULL);
- g_print ("CONNECTED\n");
-
- proving_errors (connection);
-
- process_accounts(connection);
-
- process_accounts2(connection);
-
- gda_client_close_all_connections (client);
-
- gda_main_quit();
- }
-
-
- int
- main (int argc, char **argv)
- {
-
- g_print ("STARTING\n");
- gda_init ("TestGDA", "0.1", argc, argv);
-
- save_ds ();
- // remove_ds();
-
- gda_main_run ((GdaInitFunc) do_stuff, (gpointer) NULL);
- // do_stuff();
- }
+ void
+ do_stuff ()
+ {
+ GdaClient *client;
+ GdaConnection *connection;
+
+ list_providers ();
+ list_datasources ();
+
+ client = gda_client_new ();
+
+ g_print ("CONNECTING\n");
+ connection = gda_client_open_connection (client, "calvaris", NULL, NULL,
+ GDA_CONNECTION_OPTIONS_READ_ONLY);
+
+ g_print ("CONNECTED\n");
+
+ execute_some_queries (connection);
+
+ g_print ("ERRORS PROVED!\n");
+
+ process_accounts(connection);
+
+ gda_client_close_all_connections (client);
+
+ g_object_unref(G_OBJECT(client));
+
+ play_with_parameters();
+
+ gda_main_quit();
+ }
+
+
+ int
+ main (int argc, char **argv)
+ {
+
+ g_print ("STARTING\n");
+ gda_init ("TestGDA", "0.1", argc, argv);
+
+ save_ds ();
+
+ gda_main_run ((GdaInitFunc) do_stuff, (gpointer) NULL);
+ /* do_stuff(); */
+ g_print("ENDING\n");
+
+ }
</PROGRAMLISTING>
</sect1>
<sect1 ID="connections">
@@ -1037,31 +1044,41 @@
<AREASPEC UNITS="LINECOLUMN">
<AREA ID="connecting-1" COORDS="10 1">
<AREA ID="connecting-2" COORDS="13 1">
- <AREA ID="connecting-3" COORDS="20 1">
- </AREASPEC>
+ <AREA ID="connecting-3" COORDS="24 1">
+ <AREA ID="connecting-4" COORDS="26 1">
+</AREASPEC>
<programlisting>
- void
- do_stuff ()
- {
- GdaClient *client;
- GdaConnection *connection;
-
- list_providers ();
- list_datasources ();
-
- client = gda_client_new ();
-
- g_print ("CONNECTING\n");
- connection = gda_client_open_connection (client, "calvaris", NULL, NULL);
- g_print ("CONNECTED\n");
-
- proving_errors (connection);
-
- process_accounts(connection);
-
- gda_client_close_all_connections (client);
-
- }
+ void
+ do_stuff ()
+ {
+ GdaClient *client;
+ GdaConnection *connection;
+
+ list_providers ();
+ list_datasources ();
+
+ client = gda_client_new ();
+
+ g_print ("CONNECTING\n");
+ connection = gda_client_open_connection (client, "calvaris", NULL, NULL,
+ GDA_CONNECTION_OPTIONS_READ_ONLY);
+
+ g_print ("CONNECTED\n");
+
+ execute_some_queries (connection);
+
+ g_print ("ERRORS PROVED!\n");
+
+ process_accounts(connection);
+
+ gda_client_close_all_connections (client);
+
+ g_object_unref(G_OBJECT(client));
+
+ play_with_parameters();
+
+ gda_main_quit();
+ }
</programlisting>
<CALLOUTLIST>
<CALLOUT AREAREFS="connecting-1">
@@ -1080,7 +1097,13 @@
It's a good practice to close connections when you finish using them. It
doesn't mean that you must close them each time you use them. It's better
open the connections when program starts and use them during the whole
- execution.
+ execution. This function frees the <LINK LINKEND="libgda-GdaConnection">GdaConnection</LINK>
+ objects attached to the <LINK LINKEND="libgda-GdaClient">GdaClient</LINK>.
+ </para>
+ </callout>
+ <CALLOUT AREAREFS="connecting-4">
+ <para>
+ When finishing with the client, I have to free it.
</para>
</callout>
</CALLOUTLIST>
@@ -1426,7 +1449,6 @@
for (column_id = 0; column_id < gda_data_model_get_n_columns (dm);
column_id++)
{
- /* We don't need to free this value! */
value = gda_row_get_value (row, column_id);
string=gda_value_stringify (value);
g_print ("%s\t", string);
@@ -1457,9 +1479,9 @@
LINKEND="gda-row-get-value">gda_row_get_value ()
</LINK>. Notice that <LINK
LINKEND="gda-row-get-value">gda_row_get_value ()</LINK>
- doesn't return a <EMPHASIS>const <LINK
+ returns a <EMPHASIS>const <LINK
LINKEND="libgda-gda-value">GdaValue</LINK></EMPHASIS>, so we
- have to free it.
+ do not have to free it.
</PARA>
</CALLOUT>
</CALLOUTLIST>
@@ -1541,7 +1563,6 @@
value = gda_row_get_value (row, column_id);
string=gda_value_stringify (value);
g_print ("%s\t", string);
- gda_value_free(value);
g_free(string);
}
g_print ("\n");
@@ -1620,6 +1641,7 @@
</para>
<ORDEREDLIST NUMERATION="arabic">
<LISTITEM><para>Create transaction</para></LISTITEM>
+ <LISTITEM><para>Change, if needed, the isolation level</para></LISTITEM>
<LISTITEM><para>Link transaction to a connection</para></LISTITEM>
<LISTITEM>
<para>For each command you want to execute:</para>
@@ -1639,11 +1661,12 @@
<PROGRAMLISTINGCO>
<AREASPEC UNITS="LINECOLUMN">
<AREA ID="transactions-1" COORDS="6 1">
- <AREA ID="transactions-2" COORDS="7 1">
- <AREA ID="transactions-3" COORDS="14 1">
- <AREA ID="transactions-4" COORDS="27 1">
- <AREA ID="transactions-5" COORDS="28 1">
- <AREA ID="transactions-6" COORDS="51 1">
+ <AREA ID="transactions-1a" COORDS="7 1">
+ <AREA ID="transactions-2" COORDS="9 1">
+ <AREA ID="transactions-3" COORDS="16 1">
+ <AREA ID="transactions-4" COORDS="29 1">
+ <AREA ID="transactions-5" COORDS="30 1">
+ <AREA ID="transactions-6" COORDS="55 1">
</AREASPEC>
<programlisting>
void process_accounts(GdaConnection *connection)
@@ -1652,6 +1675,8 @@
GdaCommand *command;
transaction_one=gda_transaction_new("accounts1");
+ gda_transaction_set_isolation_level(transaction_one,
+ GDA_TRANSACTION_ISOLATION_SERIALIZABLE);
gda_connection_begin_transaction(connection,transaction_one);
command=gda_command_new (
@@ -1676,6 +1701,8 @@
g_object_unref(transaction_one);
transaction_two=gda_transaction_new("accounts2");
+ gda_transaction_set_isolation_level(transaction_two,
+ GDA_TRANSACTION_ISOLATION_SERIALIZABLE);
gda_connection_begin_transaction(connection,transaction_two);
command=gda_command_new (
@@ -1706,6 +1733,11 @@
<CALLOUT AREAREFS="transactions-1">
<PARA>
Creates first transaction.
+ </PARA>
+ </CALLOUT>
+ <CALLOUT AREAREFS="transactions-1a">
+ <PARA>
+ Changes the isolation level.
</PARA>
</CALLOUT>
<CALLOUT AREAREFS="transactions-2">
Index: doc/C/examples/full_example.c
===================================================================
RCS file: /cvs/gnome/libgda/doc/C/examples/full_example.c,v
retrieving revision 1.2
diff -u -r1.2 full_example.c
--- doc/C/examples/full_example.c 3 Feb 2003 17:12:09 -0000 1.2
+++ doc/C/examples/full_example.c 29 Apr 2003 11:07:31 -0000
@@ -1,378 +1,383 @@
- #include <libgda/libgda.h>
- #include <stdio.h>
+#include <libgda/libgda.h>
+#include <stdio.h>
- #define DEFAULT_BUFFER_SIZE 1024
-
-
- gboolean
- get_errors (GdaConnection *connection)
+#define DEFAULT_BUFFER_SIZE 1024
+
+
+gboolean
+get_errors (GdaConnection * connection)
+{
+ GList *list;
+ GList *node;
+ GdaError *error;
+
+ list = (GList *) gda_connection_get_errors (connection);
+
+ for (node = g_list_first (list); node != NULL; node = g_list_next (node))
{
- GList *list;
- GList *node;
- GdaError *error;
-
- list = (GList *) gda_connection_get_errors (connection);
-
- for (node = g_list_first (list); node != NULL; node = g_list_next (node))
- {
- error = (GdaError *) node->data;
- g_print ("Error no: %d\t", gda_error_get_number (error));
- g_print ("desc: %s\t", gda_error_get_description (error));
- g_print ("source: %s\t", gda_error_get_source (error));
- g_print ("sqlstate: %s\n", gda_error_get_sqlstate (error));
- }
+ error = (GdaError *) node->data;
+ g_print ("Error no: %d\t", gda_error_get_number (error));
+ g_print ("desc: %s\t", gda_error_get_description (error));
+ g_print ("source: %s\t", gda_error_get_source (error));
+ g_print ("sqlstate: %s\n", gda_error_get_sqlstate (error));
}
-
-
-
- void
- show_table (GdaDataModel * dm)
+}
+
+
+
+void
+show_table (GdaDataModel * dm)
+{
+ gint row_id;
+ gint column_id;
+ GdaValue *value;
+ 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++)
{
- gint row_id;
- gint column_id;
- GdaValue *value;
- 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++)
- {
- 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);
- string=gda_value_stringify (value);
- g_print ("%s\t", string);
- g_free(string);
- }
- g_print("\n");
- }
+ column_id++)
+ {
+ value =
+ (GdaValue *) gda_data_model_get_value_at (dm, column_id, row_id);
+ string = gda_value_stringify (value);
+ g_print ("%s\t", string);
+ g_free (string);
+ }
+ g_print ("\n");
}
-
-
-
- void
- show_table2 (GdaDataModel * dm)
+}
+
+
+
+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++)
{
- gint row_id;
- gint column_id;
- GdaValue *value;
- GdaRow *row;
- gchar *string;
-
+ 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++)
- 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);
- gda_value_free(value);
- g_free(string);
- }
- g_print ("\n");
- }
- }
-
-
-
- void process_accounts(GdaConnection *connection)
- {
- GdaTransaction *transaction_one, *transaction_two;
- GdaCommand *command;
-
- transaction_one=gda_transaction_new("accounts1");
- gda_connection_begin_transaction(connection,transaction_one);
-
- command=gda_command_new (
- "UPDATE accounts SET balance=balance+50"
- "WHERE account_code=456",
- GDA_COMMAND_TYPE_SQL,
- GDA_COMMAND_OPTION_STOP_ON_ERRORS);
- gda_command_set_transaction(command,transaction_one);
- gda_connection_execute_non_query(connection,command,NULL);
- gda_command_free(command);
-
- command=gda_command_new (
- "UPDATE accounts SET balance=balance-50"
- "WHERE account_code=12",
- GDA_COMMAND_TYPE_SQL,
- GDA_COMMAND_OPTION_STOP_ON_ERRORS);
- gda_command_set_transaction(command,transaction_one);
- gda_connection_execute_non_query(connection,command,NULL);
- gda_command_free(command);
-
- gda_connection_commit_transaction(connection,transaction_one);
- g_object_unref(transaction_one);
-
- transaction_two=gda_transaction_new("accounts2");
- gda_connection_begin_transaction(connection,transaction_two);
-
- command=gda_command_new (
- "UPDATE accounts SET balance=balance+400"
- "WHERE account_code=456",
- GDA_COMMAND_TYPE_SQL,
- GDA_COMMAND_OPTION_STOP_ON_ERRORS);
- gda_command_set_transaction(command,transaction_two);
- gda_connection_execute_non_query(connection,command,NULL);
- gda_command_free(command);
-
- command=gda_command_new (
- "UPDATE accounts SET balance=balance-400"
- "WHERE account_code=12",
- GDA_COMMAND_TYPE_SQL,
- GDA_COMMAND_OPTION_STOP_ON_ERRORS);
- gda_command_set_transaction(command,transaction_two);
- gda_connection_execute_non_query(connection,command,NULL);
- gda_command_free(command);
-
- gda_connection_rollback_transaction(connection,transaction_two);
- g_object_unref(transaction_two);
-
- execute_sql_command(connection,"SELECT * FROM accounts");
- }
-
-
- void process_accounts2(GdaConnection *connection)
- {/*
- GdaBatch *batch;
- GdaCommand *command;
-
- batch=gda_batch_new();
- gda_batch_add_command(batch,
- "UPDATE accounts SET balance=balance+300"
- "WHERE account_code=456"
- );
- gda_batch_add_command(batch,
- "UPDATE accounts SET balance=balance-300"
- "WHERE account_code=12",
- );
- gda_batch_set_connection(batch,connection);
- gda_batch_set_transaction_mode(batch,TRUE);
- if (gda_batch_start(batch))
- g_print("BATCH OK\n");
- else
- g_print("BATCH failed\n");
-
- execute_sql_command(connection,"SELECT * FROM accounts");
- */}
-
-
- gint
- execute_sql_command (GdaConnection *connection, const gchar * buffer)
- {
- GdaCommand *command;
- GList *list;
- GList *node;
- gboolean errors=FALSE;
-
- GdaDataModel *dm;
-
-
- command = gda_command_new (buffer, GDA_COMMAND_TYPE_SQL, GDA_COMMAND_OPTION_STOP_ON_ERRORS);
- list = gda_connection_execute_command (connection, command, NULL);
- if (list!=NULL)
- for (node=g_list_first(list); node != NULL; node=g_list_next(node))
- {
- dm=(GdaDataModel *) node->data;
- if (dm == NULL)
- {
- errors=TRUE;
- }
- else
- {
- show_table (dm);
- g_object_unref(dm);
- }
- }
- else
- {
- errors=TRUE;
- }
- gda_command_free (command);
-
- return (errors);
- }
-
-
-
- gint
- execute_sql_non_query (GdaConnection *connection, const gchar * buffer)
- {
- GdaCommand *command;
- gint number;
-
- command = gda_command_new (buffer, GDA_COMMAND_TYPE_SQL, GDA_COMMAND_OPTION_STOP_ON_ERRORS);
- number = gda_connection_execute_non_query (connection, command, NULL);
-
- gda_command_free (command);
-
- return (number);
- }
-
-
-
- void
- proving_errors (GdaConnection *connection)
- {
-
- execute_sql_non_query (connection,
- "DELETE FROM cliente"
- );
- execute_sql_non_query (connection,
- "INSERT INTO cliente(cd_cli, dni, nombr, direc, telef) "
- "VALUES ('1', '1234', 'Xabier',"
- "'Rua Unha calquera', '123')"
- "; INSERT INTO cliente(cd_cli, dni, nombr, direc, telef) "
- "VALUES ('2', '2345', 'Rodriguez',"
- "'Rua Outra calquera', '234')"
- );
- execute_sql_non_query (connection,
- "INSERT INTO cliente(cd_cli, dni, nombr, direc, telef) "
- "VALUES ('1', '1234', 'Xabier',"
- "'Rua Unha calquera', '123')"
- "; INSERT INTO cliente(cd_cli, dni, nombr, direc, telef) "
- "VALUES ('2', '2345', 'Rodriguez',"
- "'Rua Outra calquera', '234')"
- );
- execute_sql_command (connection, "SELECT * FROM cliente");
-
-
- execute_sql_non_query (connection,
- "DELETE FROM accounts;"
- "INSERT INTO accounts"
- "(client_code, account_code, balance)"
- "VALUES (123, 456, 1000);"
- "INSERT INTO accounts"
- "(client_code, account_code, balance)"
- "VALUES (789, 012, 5000);"
- );
-
- execute_sql_command (connection, "SELECT * FROM accounts");
-
- }
-
-
-
- void
- list_datasources (void)
- {
- GList *ds_list;
- GList *node;
- GdaDataSourceInfo *info;
-
- ds_list = gda_config_get_data_source_list ();
-
+ 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");
- for (node = g_list_first (ds_list); node != NULL; node = g_list_next (node))
- {
- info = (GdaDataSourceInfo *) node->data;
-
- g_print
- ("NAME: %s PROVIDER: %s CNC: %s DESC: %s USER: %s PASSWORD: %s\n",
- info->name, info->provider, info->cnc_string, info->description,
- info->username, info->password);
-
- }
- g_print ("\n");
-
- gda_config_free_data_source_list (ds_list);
-
- }
-
-
-
- void
- list_providers (void)
- {
- GList *prov_list;
- GList *node;
- GdaProviderInfo *info;
-
- prov_list = gda_config_get_provider_list ();
-
- for (node = g_list_first (prov_list); node != NULL;
- node = g_list_next (node))
- {
- info = (GdaProviderInfo *) node->data;
-
- g_print ("ID: %s\n", info->id);
-
- }
-
- gda_config_free_provider_list (prov_list);
-
}
-
-
-
- void
- do_stuff ()
- {
- GdaClient *client;
- GdaConnection *connection;
-
- list_providers ();
- list_datasources ();
-
- client = gda_client_new ();
-
- g_print ("CONNECTING\n");
- connection = gda_client_open_connection (client, "calvaris", NULL, NULL);
- g_print ("CONNECTED\n");
-
- proving_errors (connection);
-
- process_accounts(connection);
-
- process_accounts2(connection);
-
- gda_client_close_all_connections (client);
-
- gda_main_quit();
- }
-
-
-
- void
- save_ds ()
+}
+
+
+
+void
+process_accounts (GdaConnection * connection)
+{
+ GdaTransaction *transaction_one, *transaction_two;
+ GdaCommand *command;
+
+ transaction_one = gda_transaction_new ("accounts1");
+ gda_transaction_set_isolation_level (transaction_one,
+ GDA_TRANSACTION_ISOLATION_SERIALIZABLE);
+ gda_connection_begin_transaction (connection, transaction_one);
+
+ command = gda_command_new ("UPDATE accounts SET balance=balance+50"
+ "WHERE account_code=456",
+ GDA_COMMAND_TYPE_SQL,
+ GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+ gda_command_set_transaction (command, transaction_one);
+ gda_connection_execute_non_query (connection, command, NULL);
+ gda_command_free (command);
+
+ command = gda_command_new ("UPDATE accounts SET balance=balance-50"
+ "WHERE account_code=12",
+ GDA_COMMAND_TYPE_SQL,
+ GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+ gda_command_set_transaction (command, transaction_one);
+ gda_connection_execute_non_query (connection, command, NULL);
+ gda_command_free (command);
+
+ gda_connection_commit_transaction (connection, transaction_one);
+ g_object_unref (transaction_one);
+
+ transaction_two = gda_transaction_new ("accounts2");
+ gda_transaction_set_isolation_level (transaction_two,
+ GDA_TRANSACTION_ISOLATION_SERIALIZABLE);
+ gda_connection_begin_transaction (connection, transaction_two);
+
+ command = gda_command_new ("UPDATE accounts SET balance=balance+400"
+ "WHERE account_code=456",
+ GDA_COMMAND_TYPE_SQL,
+ GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+ gda_command_set_transaction (command, transaction_two);
+ gda_connection_execute_non_query (connection, command, NULL);
+ gda_command_free (command);
+
+ command = gda_command_new ("UPDATE accounts SET balance=balance-400"
+ "WHERE account_code=12",
+ GDA_COMMAND_TYPE_SQL,
+ GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+ gda_command_set_transaction (command, transaction_two);
+ gda_connection_execute_non_query (connection, command, NULL);
+ gda_command_free (command);
+
+ gda_connection_rollback_transaction (connection, transaction_two);
+ g_object_unref (transaction_two);
+
+ execute_sql_command (connection, "SELECT * FROM accounts");
+}
+
+
+gint
+execute_sql_command (GdaConnection * connection, const gchar * buffer)
+{
+ GdaCommand *command;
+ GList *list;
+ GList *node;
+ gboolean errors = FALSE;
+
+ GdaDataModel *dm;
+
+
+ command =
+ gda_command_new (buffer, GDA_COMMAND_TYPE_SQL,
+ GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+ list = gda_connection_execute_command (connection, command, NULL);
+ if (list != NULL)
+ for (node = g_list_first (list); node != NULL; node = g_list_next (node))
+ {
+ dm = (GdaDataModel *) node->data;
+ if (dm == NULL)
+ {
+ errors = TRUE;
+ get_errors (connection);
+ }
+ else
+ {
+ show_table2 (dm);
+ g_object_unref (dm);
+ }
+ }
+ else
{
- gda_config_save_data_source ("calvaris", "PostgreSQL", "DATABASE=calvaris",
- "cosa de calvaris", NULL, NULL);
+ errors = TRUE;
+ get_errors (connection);
}
-
-
-
- void
- remove_ds ()
+ gda_command_free (command);
+
+ return (errors);
+}
+
+
+
+gint
+execute_sql_non_query (GdaConnection * connection, const gchar * buffer)
+{
+ GdaCommand *command;
+ gint number;
+
+ command =
+ gda_command_new (buffer, GDA_COMMAND_TYPE_SQL,
+ GDA_COMMAND_OPTION_STOP_ON_ERRORS);
+ number = gda_connection_execute_non_query (connection, command, NULL);
+
+ gda_command_free (command);
+
+ return (number);
+}
+
+
+
+void
+execute_some_queries (GdaConnection * connection)
+{
+
+ execute_sql_non_query (connection, "DELETE FROM cliente");
+ execute_sql_non_query (connection,
+ "INSERT INTO cliente(cd_cli, dni, nombr, direc, telef) "
+ "VALUES ('1', '1234', 'Xabier',"
+ "'Rua Unha calquera', '123')"
+ "; INSERT INTO cliente(cd_cli, dni, nombr, direc, telef) "
+ "VALUES ('2', '2345', 'Rodriguez',"
+ "'Rua Outra calquera', '234')");
+ execute_sql_non_query (connection,
+ "INSERT INTO cliente(cd_cli, dni, nombr, direc, telef) "
+ "VALUES ('1', '1234', 'Xabier',"
+ "'Rua Unha calquera', '123')"
+ "; INSERT INTO cliente(cd_cli, dni, nombr, direc, telef) "
+ "VALUES ('2', '2345', 'Rodriguez',"
+ "'Rua Outra calquera', '234')");
+ execute_sql_command (connection, "SELECT * FROM cliente");
+
+
+ execute_sql_non_query (connection,
+ "DELETE FROM accounts;"
+ "INSERT INTO accounts"
+ "(client_code, account_code, balance)"
+ "VALUES (123, 456, 1000);"
+ "INSERT INTO accounts"
+ "(client_code, account_code, balance)"
+ "VALUES (789, 012, 5000);");
+
+ execute_sql_command (connection, "SELECT * FROM accounts");
+}
+
+
+
+void
+list_datasources (void)
+{
+ GList *ds_list;
+ GList *node;
+ GdaDataSourceInfo *info;
+
+ ds_list = gda_config_get_data_source_list ();
+
+ g_print ("\n");
+ for (node = g_list_first (ds_list); node != NULL; node = g_list_next (node))
{
- gda_config_remove_data_source("calvaris");
+ info = (GdaDataSourceInfo *) node->data;
+
+ g_print
+ ("NAME: %s PROVIDER: %s CNC: %s DESC: %s USER: %s PASSWORD: %s\n",
+ info->name, info->provider, info->cnc_string, info->description,
+ info->username, info->password);
+
}
-
-
-
- int
- main (int argc, char **argv)
+ g_print ("\n");
+
+ gda_config_free_data_source_list (ds_list);
+
+}
+
+
+
+void
+list_providers (void)
+{
+ GList *prov_list;
+ GList *node;
+ GdaProviderInfo *info;
+
+ prov_list = gda_config_get_provider_list ();
+
+ for (node = g_list_first (prov_list); node != NULL;
+ node = g_list_next (node))
{
-
- g_print ("STARTING\n");
- gda_init ("TestGDA", "0.1", argc, argv);
-
- save_ds ();
- /* remove_ds(); */
-
- gda_main_run ((GdaInitFunc) do_stuff, (gpointer) NULL);
- /* do_stuff(); */
-
+ info = (GdaProviderInfo *) node->data;
+
+ g_print ("ID: %s\n", info->id);
+
}
+
+ gda_config_free_provider_list (prov_list);
+
+}
+
+
+void
+play_with_parameters ()
+{
+ GdaParameterList *list;
+ GdaParameter *parameter;
+ GdaValue *value;
+
+ list = gda_parameter_list_new ();
+
+ value = gda_value_new_integer (10);
+ parameter = gda_parameter_new ("p1", value);
+ gda_parameter_list_add_parameter (list, parameter);
+ gda_value_free (value);
+
+ value = gda_value_new_integer (2);
+ parameter = gda_parameter_new ("p2", value);
+ gda_parameter_list_add_parameter (list, parameter);
+ gda_value_free (value);
+
+ gda_parameter_list_free (list);
+}
+
+
+
+void
+do_stuff ()
+{
+ GdaClient *client;
+ GdaConnection *connection;
+
+ list_providers ();
+ list_datasources ();
+
+ client = gda_client_new ();
+
+ g_print ("CONNECTING\n");
+ connection = gda_client_open_connection (client, "calvaris", NULL, NULL,
+ GDA_CONNECTION_OPTIONS_READ_ONLY);
+
+ g_print ("CONNECTED\n");
+
+ execute_some_queries (connection);
+
+ g_print ("ERRORS PROVED!\n");
+
+ process_accounts (connection);
+
+ gda_client_close_all_connections (client);
+
+ g_object_unref (G_OBJECT (client));
+
+ play_with_parameters ();
+
+ gda_main_quit ();
+}
+
+
+
+void
+save_ds ()
+{
+ gda_config_save_data_source ("calvaris", "PostgreSQL", "DATABASE=calvaris",
+ "cosa de calvaris", NULL, NULL);
+}
+
+
+
+void
+remove_ds ()
+{
+ gda_config_remove_data_source ("calvaris");
+}
+
+
+
+int
+main (int argc, char **argv)
+{
+
+ g_print ("STARTING\n");
+ gda_init ("TestGDA", "0.1", argc, argv);
+
+ save_ds ();
+ /* remove_ds(); */
+
+ gda_main_run ((GdaInitFunc) do_stuff, (gpointer) NULL);
+ /* do_stuff(); */
+ g_print ("ENDING\n");
+
+}
Index: libgda/gda-parameter.c
===================================================================
RCS file: /cvs/gnome/libgda/libgda/gda-parameter.c,v
retrieving revision 1.20
diff -u -r1.20 gda-parameter.c
--- libgda/gda-parameter.c 17 Jan 2003 00:56:16 -0000 1.20
+++ libgda/gda-parameter.c 29 Apr 2003 11:07:32 -0000
@@ -44,7 +44,7 @@
/**
* gda_parameter_new
* @name: name for the parameter being created.
- * @type: GDA value type for this parameter.
+ * @value: GDA value for this parameter.
*
* Create a new #GdaParameter object, which is usually used
* with #GdaParameterList.
@@ -52,14 +52,16 @@
* Returns: the newly created #GdaParameter.
*/
GdaParameter *
-gda_parameter_new (const gchar *name, GdaValueType type)
+gda_parameter_new (const gchar *name, GdaValue *value)
{
GdaParameter *param;
+ g_return_val_if_fail (name != NULL, NULL);
+ g_return_val_if_fail (value != NULL, NULL);
+
param = g_new0 (GdaParameter, 1);
param->name = g_strdup (name);
- param->value = gda_value_new_null ();
- param->value->type = type;
+ param->value = gda_value_copy (value);
return param;
}
@@ -129,7 +131,7 @@
* gda_parameter_get_name
* @param: a #GdaParameter object.
*
- * Returns the name of the given #GdaParameter.
+ * Returns: the name of the given #GdaParameter.
*/
const gchar *
gda_parameter_get_name (GdaParameter *param)
@@ -140,6 +142,8 @@
/**
* gda_parameter_set_name
+ * @param: a #GdaParameter object.
+ * @name: the name you want to set.
*/
void
gda_parameter_set_name (GdaParameter *param, const gchar *name)
@@ -147,13 +151,15 @@
g_return_if_fail (param != NULL);
g_return_if_fail (name != NULL);
- if (param->name != NULL)
- g_free (param->name);
+ g_free (param->name);
param->name = g_strdup (name);
}
/**
* gda_parameter_get_value
+ * @param: the parameter.
+ *
+ * Returns: the #GdaValue into de parameter.
*/
const GdaValue *
gda_parameter_get_value (GdaParameter *param)
@@ -164,11 +170,19 @@
/**
* gda_parameter_set_value
+ * @param: the parameter.
+ * @value: GDA value for this parameter.
+ *
+ * Sets a new #GdaValue into the parameter.
*/
void
gda_parameter_set_value (GdaParameter *param, GdaValue *value)
{
- /* FIXME */
+ g_return_if_fail (param != NULL);
+ g_return_if_fail (value != NULL);
+
+ gda_value_free(param->value);
+ param->value=gda_value_copy(value);
}
/**
Index: libgda/gda-parameter.h
===================================================================
RCS file: /cvs/gnome/libgda/libgda/gda-parameter.h,v
retrieving revision 1.13
diff -u -r1.13 gda-parameter.h
--- libgda/gda-parameter.h 17 Jan 2003 00:56:16 -0000 1.13
+++ libgda/gda-parameter.h 29 Apr 2003 11:07:32 -0000
@@ -33,7 +33,7 @@
GdaValue *value;
} GdaParameter;
-GdaParameter *gda_parameter_new (const gchar *name, GdaValueType type);
+GdaParameter *gda_parameter_new (const gchar *name, GdaValue *value);
GdaParameter *gda_parameter_new_gobject (const gchar *name, const GObject *value);
GdaParameter *gda_parameter_new_string (const gchar *name, const gchar *value);
void gda_parameter_free (GdaParameter *param);
Index: libgda/gda-row.c
===================================================================
RCS file: /cvs/gnome/libgda/libgda/gda-row.c,v
retrieving revision 1.33
diff -u -r1.33 gda-row.c
--- libgda/gda-row.c 10 Jan 2003 04:13:59 -0000 1.33
+++ libgda/gda-row.c 29 Apr 2003 11:07:33 -0000
@@ -201,7 +201,7 @@
*
* Returns: a pointer to the #GdaValue in the position @num of @row.
*/
-GdaValue *
+G_CONST_RETURN GdaValue *
gda_row_get_value (GdaRow *row, gint num)
{
g_return_val_if_fail (row != NULL, NULL);
Index: libgda/gda-row.h
===================================================================
RCS file: /cvs/gnome/libgda/libgda/gda-row.h,v
retrieving revision 1.25
diff -u -r1.25 gda-row.h
--- libgda/gda-row.h 10 Jan 2003 04:13:59 -0000 1.25
+++ libgda/gda-row.h 29 Apr 2003 11:07:33 -0000
@@ -23,6 +23,12 @@
#if !defined(__gda_row_h__)
# define __gda_row_h__
+#ifdef G_DISABLE_CONST_RETURNS
+#define G_CONST_RETURN
+#else
+#define G_CONST_RETURN const
+#endif
+
#include <libgda/gda-field.h>
@@ -31,16 +37,16 @@
typedef struct _GdaDataModel GdaDataModel;
typedef struct _GdaRow GdaRow;
-GdaRow *gda_row_new (GdaDataModel *model, gint count);
-GdaRow *gda_row_new_from_list (GdaDataModel *model, const GList *values);
-void gda_row_free (GdaRow *row);
-GdaDataModel *gda_row_get_model (GdaRow *row);
-gint gda_row_get_number (GdaRow *row);
-void gda_row_set_number (GdaRow *row, gint number);
-const gchar *gda_row_get_id (GdaRow *row);
-void gda_row_set_id (GdaRow *row, const gchar *id);
-GdaValue *gda_row_get_value (GdaRow *row, gint num);
-gint gda_row_get_length (GdaRow *row);
+GdaRow *gda_row_new (GdaDataModel *model, gint count);
+GdaRow *gda_row_new_from_list (GdaDataModel *model, const GList *values);
+void gda_row_free (GdaRow *row);
+GdaDataModel *gda_row_get_model (GdaRow *row);
+gint gda_row_get_number (GdaRow *row);
+void gda_row_set_number (GdaRow *row, gint number);
+const gchar *gda_row_get_id (GdaRow *row);
+void gda_row_set_id (GdaRow *row, const gchar *id);
+G_CONST_RETURN GdaValue *gda_row_get_value (GdaRow *row, gint num);
+gint gda_row_get_length (GdaRow *row);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]