Я использую следующее для запроса LIKE. Правильна ли эта техника для LIKE?
selectstmtSearch = nil;
if(selectstmtSearch == nil){
const char *sql = "SELECT col1, col2 FROM table1 t1 JOIN table2 t2 ON t1.cityid = t2.cityid where t1.cityname like ?001 order by t1.cityname";
if(sqlite3_prepare_v2(databaseSearch, sql, -1, &selectstmtSearch, NULL) == SQLITE_OK)
{
sqlite3_bind_text(selectstmtSearch, 1, [[NSString stringWithFormat:@"%%%@%%", searchText] UTF8String], -1, SQLITE_TRANSIENT);
}
}
Проблема, с которой я столкнулся, заключается в том, что после нескольких попыток использования я получаю ошибку 14 в sqlite3_open (), которая не может открыть базу данных. Если я заменю LIKE на что-то вроде:
SELECT col1, col2
FROM table1 t1
JOIN table2 t2 ON t1.cityid = t2.cityid
where t1.cityname = ?
order by t1.cityname
Работает нормально. Я делаю открыть / закрыть БД до того, как после вышеупомянутого кода. Есть ли способ выяснить, почему именно база данных не может быть открыта и как она связана с моим синтаксисом LIKE?