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で同じコードを実装していて、うまくいきます。どんな助けもありがとう。
答えをいただきありがとうございます。いつか明白なことを見逃すことができるのは面白いです。 –