sqlite с оператором LIKE в xcode для iphone - PullRequest
1 голос
/ 04 апреля 2011

Первые (из многих?) Сообщений здесь.

У меня проблема с моим утверждением.

sqlite3_stmt *statement;
    const char *query = "select * from words where ordet LIKE ?001";

    NSString *wildcard = [NSString stringWithFormat:@"%@%%", fullWordForSQL.text];
    sqlite3_bind_text(statement, 1, [wildcard UTF8String], -1, SQLITE_STATIC);

    if (sqlite3_prepare_v2(dbHandle, query, -1, &statement, NULL) == SQLITE_OK ){
        NSLog(@"in if");
        NSLog(@"Data: %s", query);

Я успешно получил данные с помощью запроса:

const char *query = "select * from words where ordet LIKE "_test__";

Но когда я пытаюсь связать динамически созданное слово, оно не прилипает.Мой nslog печатает «Данные: выберите * из слов, где ordet LIKE? 001», так что каким-то образом я не получаю привязку к работе.Я знаю, что с кодом выше будут другие проблемы, но сейчас я застрял в этой проблеме

Ответы [ 4 ]

2 голосов
/ 04 апреля 2011

query не меняется при звонке sqlite3_bind_text(). Если вы думаете об этом, это никак не должно измениться, поскольку вы объявили его как const char *. То, что вы хотите сделать, это использовать sqlite3_trace() для регистрации, чтобы получить обратный вызов с окончательной связанной строкой, чтобы вы могли видеть, что на самом деле происходит.

1 голос
/ 04 апреля 2011

Разве вам не нужно заключать значение в одинарные кавычки?"где ordet как"% 001 "" Или это не нужно в xcode?Я не опытный в xcode.Вы пытаетесь вставить подстановочный знак в оператор sql перед значением, которое уже содержится в строке оператора, или вы пытаетесь добавить подстановочный символ к поисковому значению, а затем связать это поисковое значение сПодстановочный знак в заявлении?Для меня это похоже на первое, но, как я уже сказал, я не знаю xcode.Обычно я не включал бы часть поискового термина в оператор запроса, но делал бы это:

       "select * from words where ordet like ?"

      // prepend the wildcard to my search term
      // bind the search term to my query
0 голосов
/ 08 июня 2014

Я думаю, что это намного проще.

NSString *query = [NSString stringWithFormat:@"SELECT * FROM words WHERE ordet GLOB '*%@*' ", fullWordForSQL.text];
0 голосов
/ 04 апреля 2011

Попробуйте выполнить инструкцию prepare_v2 ДО вашего комментария bind_text.

...