问题是您正在使用构建SQL
stringWithFormat。这是一种容易出现此类问题的做法。而是
?在SQL中使用占位符,然后用于
sqlite3_bind_text将值绑定到
?占位符。请参阅
sqlite3_bind_text()帮助以获取更多信息。
例如,您可能会:
const char *insert_stmt = "INSERT INTO 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);}我只是输入了此内容,因此请原谅任何错别字,但希望它能说明您的想法。
注意,我也(a)检查所有这些返回码;(b)记录错误(如果有);(c)完成后完成陈述。



