2016-12-12 13 views
0

他の回答を見てきましたが、私が持っている問題には答えが見られませんでした。私はもっ​​と興味を持っています。私は今までそれをやっているやり方です。別の方法があります。このプロジェクトは、目的のCを使用するモバイルデバイス向けです。iOS上でSQLite FTSテーブルを作成するときの問題

まず、以下のように、通常の表を作成してから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

答えをいただきありがとうございます。いつか明白なことを見逃すことができるのは面白いです。 –

関連する問題