Как использовать SQLite3
-
27-09-2019 - |
Вопрос
У меня возникают проблемы с запуском динамической как заявление в моем проекте: этот запрос работает как очарование и возвращает все предметы с «T» в их имени:
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%t%%'";
Когда я пытаюсь сделать это динамично, я не получаю ошибок, но просто пустой результат. Похоже, значение равно нулю. Я пытаюсь связать строковое значение «s», которое выводит правильное значение
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);
Как я должен связать это значение вместо использования:
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";
Решение
Только что нашел отличное объяснение в http://www.innerexception.com/2008/10/using-like-statement-in-sqlite-3-from.html.
Я изменил следующие строки:
const char *sql = "select * from bbc_ipad_v1_node where name LIKE ?001";
а также
NSString *searchInput = [NSString stringWithFormat:@"%@%%", s];
sqlite3_bind_text(statement, 1, [searchInput UTF8String],-1,SQLITE_TRANSIENT);
Другие советы
Вы действительно можете просто сказать
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%t%'";
(Обратите внимание на одно-%
s)
Не связан с StackOverflow