Как использовать запрос LIKE в sqlite и iPhone - PullRequest
2 голосов
/ 25 декабря 2009

Я использую следующее для запроса 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?

1 Ответ

1 голос
/ 25 декабря 2009

Вы должны sqlite3_reset или sqlite3_finalize(selectstmtSearch), прежде чем закрыть соединение с базой данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...