Hi
I spent 6 hours on this issue and I don't understand why I get a wrong value.

My database content :
sqlite> select * from config;
1|version|1
2|ftpserver|A
3|ftp_remotedir|
4|ftp_login|
5|ftp_password|

A simple query :
sqlite> SELECT config_value FROM config WHERE config_name="version";
1

Ok, all right.

Now I try to execute the same query with this code :

*****************************************************************************************************************
typedef struct TabResult {
 char *value;
} TabResult;

/*******************************************************************************************/
/* Get a config value */
/*******************************************************************************************/

char * get_config_value (sqlite3 * db, char * config_name) {

   gchar * query;
   int rc;
   char *zErrMsg = 0;
   char *config_value=0;
   TabResult res;
query = g_strdup_printf("SELECT config_value FROM config WHERE config_name='version'\n");
   printf (query);
   rc= sqlite3_exec( db, query, exec_get_config_value_cb , &res, &zErrMsg);
if (rc!=SQLITE_OK) {
       fprintf(stderr, "SQL error: %s\n", zErrMsg);
       sqlite3_free(zErrMsg);
       return NULL;
   }
printf ("gpstracer-cfg.c - get_config_value : %s : %s\n", config_name, (char *)res.value);
   return config_value;
}


/*******************************************************************************************/
/* Callback of the get_config_value query */
/*******************************************************************************************/

static int exec_get_config_value_cb(void *result, int argc, char **argv, char **azColName) {

   int i;
   TabResult *p = (TabResult*)result;

   for(i=0; i<argc; i++){
     printf("%i : %s = %s\n", i, azColName[i], argv[i] ? argv[i] : "NULL");
   }
   printf("\n");
   p->value = argv[0];
printf ("gpstracer-cfg.c - exec_get_config_value_cb : returned value : %s\n", argv[0]);
   printf ("%s,%s\n", p->value, argv[0]);
   return 0;
}
*********************************************************************************************************

When I call the function :
get_config_value (sqlite3 * db, "version")

I get :
1: SELECT config_value FROM config WHERE config_name="version"
2: 0 : config_value = 1
3:
4: gpstracer-cfg.c - exec_get_config_value_cb : returned value : 1
5: 1,1 -> ok 6: gpstracer-cfg.c - get_config_value : version : ftp_password ->nok

Line #4 : all right : version = 1
Line #5 : The returned value change to "ftp-password" !!!!!

I don't know why !

I use libsqlite3-0 3.4.1

Can some help me to understand this ?

Thanks.

David.

--
Web site : http://david.hautbois.free.fr
Tablet users map : http://david.hautbois.free.fr/maps/index.php



-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to