Special Characters JSON iOS SQLite -


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