2016-12-12 8 views
0

Я посмотрел на другие ответы, но я не видел ни одного ответа на проблему, которая у меня есть. Меня больше интересует, как я это делаю, когда-либо работаю, и если да, то как; чем здесь альтернативные методы. Проект предназначен для мобильных устройств с использованием объектива c.Проблема с заполнением таблицы SQLite FTS на iOS

Сначала создаю обычный стол, а затем таблицу FTS, как показано ниже.

NSString *searchTable = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS %@ (%@ INTEGER PRIMARY KEY, %@ TEXT, %@ TEXT, %@ TEXT)", gPsalmVersesTableName, gIDKey , gNameKey, gVerseKey, gTextKey]; 
if (sqlite3_exec(mInfoDB, [searchTable UTF8String], NULL, NULL, &errMsg) != SQLITE_OK) 
    NSLog(@"Failed to create table %@", gPsalmVersesTableName); 

NSString *virtualTable = [NSString stringWithFormat:@"CREATE VIRTUAL TABLE IF NOT EXISTS %@ USING fts4 (content='%@', %@)",gFTSPsalmVersesTableName, gPsalmVersesTableName, gTextKey]; 
if (sqlite3_exec(mInfoDB, [virtualTable UTF8String], NULL, NULL, &errMsg) != SQLITE_OK) 
    NSLog(@"Failed to create table %@", gFTSPsalmVersesTableName); 

Тогда я заселить регулярный стол (gPsalmVersesTableName), я подтвердил, что этот шаг работает правильно. Загрузив содержимое приложения и прочитав таблицу в средстве просмотра базы данных.

Когда я заполняю таблицу FTS, я не получаю никаких ошибок, однако данные не добавляются в таблицу.

if (sqlite3_open([mDataBaseName UTF8String], &mInfoDB) == SQLITE_OK) 
    { 
     sqlite3_stmt *statement; 
     @try 
     { 
      NSString *rebuildSQL = [NSString stringWithFormat:@"INSERT INTO %@(%@) VALUES('rebuild')", gFTSPsalmVersesTableName, gFTSPsalmVersesTableName]; 

      int result = sqlite3_prepare_v2(mInfoDB, [rebuildSQL UTF8String], -1, &statement, NULL); 
      NSLog(@"%s", sqlite3_errstr(result)); 
     } 
     @finally 
     { 
      sqlite3_finalize(statement); 
      sqlite3_close(mInfoDB); 
     } 
    } 

У меня есть тот же код на Android, и он отлично работает. Любая помощь будет оценена по достоинству.

ответ

1

sqlite3_prepare_v2() не выполняет утверждение; sqlite3_step().

+0

Спасибо за ответ, это забавно, как когда-нибудь вы можете пропустить очевидное. –

 Смежные вопросы

  • Нет связанных вопросов^_^