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]
-----------------------------------------------------------------------------