[gnome-db] Fwd: API Break Request for gda_insert_row_into_table





---------- Forwarded message ----------
From: Daniel Espinosa <esodan gmail com>
Date: 2008/12/24
Subject: Re: [gnome-db] API Break Request for gda_insert_row_into_table
To: Vivien Malerba <vmalerba gmail com>




2008/12/23 Vivien Malerba <vmalerba gmail com>



2008/12/21 Daniel Espinosa <esodan gmail com>

Hi all

I'm working in gda_insert_row_into_table but have some troubles:

I'm creating the SQL usin GdaSqlStatement structs, with success but strings are renderer with out quotes ("") can any help me to know how can I do this to work.

I'm adding a GdaSqlExpr to values GList in the GdaSqlStatementInsert, when render the GdaSqlStatement I get:

 INTO test (q, number, a) VALUES (NEW TEXT, 1000, NUEVO NOMBRE)

it is an invalid SQL, how can I get quoted strings. This must be

 INTO test (q, number, a) VALUES ('NEW TEXT', 1000, 'NUEVO NOMBRE')

for a PostgreSQL database.

It's up to you to add quotes where they are needed (because the GdaSqlStatement is just a tree representation of an SQL statement). Anyway, what you should do is use GdaSqlParamSpec (which are variables or parameters), this will have the following benefits:
* avoid you the job of adding quotes when needed
* avoid any SQL injection problems
 


Another point:

I have the Idea to make this functions to use a GdaBatch object, in order to allow any one to add more SQL commands to it (may be calling Gda Easy functions multiple times) and then execute then at once.

If all agree I can change this functions:

gboolean gda_prepare_insert_row_into_table (Gda Connection *cnc, GdaBatch *batch, const gchar *table, GdaSet *last_inserted_row, GError *error, ...);

If batch is NULL this function execute the insert command, if not, add the result of calculate the corresponding GdaStatement to GdaBatch without execute it.

I'd prefer 2 different functions to have easier to understant arguments.


Then you mean to have:

Direct execution:

gboolean gda_insert_row_into_table (Gda Connection *cnc, const gchar *table, GdaSet *last_inserted_row, GError *error, ...);


Add the statement to a GdaBatch:


gboolean gda_prepare_insert_row_into_table (Gda Connection *cnc, GdaBatch *batch, const gchar *table, GdaSet *last_inserted_row, GError *error, ...);


 
 


gboolean gda_execute_batch (GdaConnection *cnc, GdaBatch *batch, GError *error);

As a convenience function of the gda_connection_batch_execute.

Looks great!
 


This coul apply for the rest of Gda Easy functions to implement.


You mean for update and delete ones?

Yes, then there will be one for direct execution and one to add new statements to a GdaBatch object.

--
Trabajar, la mejor arma para tu superación
"de grano en grano, se hace la arena" (R) (en trámite, pero para los cuates: LIBRE)



--
Trabajar, la mejor arma para tu superación
"de grano en grano, se hace la arena" (R) (en trámite, pero para los cuates: LIBRE)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]