Pregunta

Tengo problemas para ejecutar una sentencia dinámica COMO en mi proyecto: esta consulta funciona como un encanto y devuelve todos los elementos con una 't' en su nombre:

const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%t%%'";

Cuando intento hacer esto de forma dinámica no consigo errores, pero sólo un resultado vacío. Parece que el valor es nulo. Trato de enlazar un valor de cadena 's' que da salida a un valor correcto

NSLog(@"bbc_ : search menu items from db based on: %@",s);
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
sqlite3_bind_text(statement, 1, [s UTF8String],-1,SQLITE_TRANSIENT);

Como deberia unen este valor en vez de usar:

const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";
¿Fue útil?

Solución

Sólo se encontró una gran explicación http://www.innerexception.com/2008/10/using-like-statement-in-sqlite-3-from.html

He cambiado las siguientes líneas:

const char *sql = "select * from bbc_ipad_v1_node where name LIKE ?001";

y

NSString *searchInput = [NSString stringWithFormat:@"%@%%", s];
sqlite3_bind_text(statement, 1, [searchInput UTF8String],-1,SQLITE_TRANSIENT); 

Otros consejos

En realidad se puede decir simplemente

const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%t%'";

(Tenga en cuenta los solo-%s)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top