i have 1 question. i'm getting information json , returns me invalid character. json give me this: "27/"" when need this: 27". understand encode special characters when use value on nsstring make insert in sqlite table, can't use 27/" cause insert format this: insert formatos (id, nombre) values ("17", "27"").
what method need insert information correctly in sqllite?
for (int = 0; i<idformato.count; i++) { nsstring *idstr = [idformato objectatindex:i]; nsstring *namestr = [nameformato objectatindex:i]; insertsql = [nsstring stringwithformat:@"insert formatos (id, nombre) values (\"%@\", \"%@\")", idstr, namestr]; //char constant query encoded un utf const char *insert_stmt = [insertsql utf8string]; //execute query sqlite3_prepare_v2(dienedb, insert_stmt, -1, &statement, null); //check if statment dne correctly if(sqlite3_step(statement) == sqlite_done){ nslog(@"guardado formatos correctamente"); }
the json:
[ {"id_formato_int":"17","nombre_formato_str":"2,5\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:17:55","id_usuario_mod_int":null,"fecha_mod_formato_dat":null},{"id_formato_int":"18","nombre_formato_str":"4\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:18:20","id_usuario_mod_int":null,"fecha_mod_formato_dat":null},{"id_formato_int":"19","nombre_formato_str":"4,7\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:20:07","id_usuario_mod_int":null,"fecha_mod_formato_dat":null},{"id_formato_int":"20","nombre_formato_str":"5,5\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:20:15","id_usuario_mod_int":null,"fecha_mod_formato_dat":null},{"id_formato_int":"21","nombre_formato_str":"9,7\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:20:42","id_usuario_mod_int":null,"fecha_mod_formato_dat":null},{"id_formato_int":"22","nombre_formato_str":"7,9\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:21:04","id_usuario_mod_int":null,"fecha_mod_formato_dat":null},{"id_formato_int":"23","nombre_formato_str":"11\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:22:40","id_usuario_mod_int":null,"fecha_mod_formato_dat":null},{"id_formato_int":"24","nombre_formato_str":"13\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:22:44","id_usuario_mod_int":null,"fecha_mod_formato_dat":null},{"id_formato_int":"25","nombre_formato_str":"15\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:22:49","id_usuario_mod_int":null,"fecha_mod_formato_dat":null},{"id_formato_int":"26","nombre_formato_str":"21,5\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:23:11","id_usuario_mod_int":null,"fecha_mod_formato_dat":null},{"id_formato_int":"27","nombre_formato_str":"27\"","id_usuario_alta_int":"3","fecha_alta_formato_dat":"2014-09-18 07:23:14","id_usuario_mod_int":null,"fecha_mod_formato_dat":null} ]
the issue you're building sql withstringwithformat
. practice susceptible sort of problem. instead, use ?
placeholders in sql , use sqlite3_bind_text
bind values ?
placeholders. see sqlite3_bind_text()
help more information.
for example, might:
const char *insert_stmt = "insert formatos (id, nombre) values (?, ?)"; if (sqlite3_prepare_v2(dienedb, insert_stmt, -1, &statement, null) != sqlite_ok) { // prepare sql nslog(@"prepare error: %s", sqlite3_errmsg(dienedb)); } else { if (sqlite3_bind_text(statement, 1, idstr, -1, null) != sqlite_ok) { // bind 1 nslog(@"bind idstr error: %s", sqlite3_errmsg(dienedb)); } else if (sqlite3_bind_text(statement, 2, namestr, -1, null) != sqlite_ok) { // bind 2 nslog(@"bind namestr error: %s", sqlite3_errmsg(dienedb)); } else if (sqlite3_step(statement) != sqlite_done) { // perform sql nslog(@"step error: %s", sqlite3_errmsg(dienedb)); } else { nslog(@"guardado formatos correctamente"); } sqlite3_finalize(statement); }
i typed in, please forgive typos, illustrates idea.
note, (a) check of these return codes; (b) log error if any; , (c) finalize statement when done.
Comments
Post a Comment