1

sqlite データベースを更新します。私はこのコードを試しました...

 if(sqlite3_exec(dataBase, "VACUUM;", 0, 0, NULL)==SQLITE_OK) 
    {      NSLog(@"Vacuumed DataBase");    

    }

私の正確な要件は、一部のコンテンツを削除してから、アプリを強制終了した後ではなく、そのsqliteをすぐに更新することです....

私はSQLITEを更新するためにそのコードを使用しましたが、挿入の直後ではない別の場所が機能していないことを意味します。

この関数は実行されません。Sqliteをリフレッシュしたい...

どうすればこの問題を解決できますか?

4

2 に答える 2

1

"VACUUM;"ステートメントからセミコロンを削除してみてください。

if (sqlite3_exec(dataBase, "VACUUM", 0, 0, NULL) == SQLITE_OK) {
   NSLog(@"Vacuumed DataBase");
}

セミコロンは、ステートメントが完了したことをエンジンに通知する必要があるsqlite3コマンドラインクライアントでのみターミネーターであるという考えだと思います。C API を使用する場合、完全なステートメントが によって受信されるため、ターミネータは必要ありませんsqlite3_exec()。実際、この場合、セミコロンはエラーです。図に行きます。

また、他の SQLITE_XXX コードも処理する必要があります。

于 2013-08-06T11:48:42.220 に答える
-1

あなたはしたいかもしれない:

  • データベースを更新してデータを変更または削除します。SQLUPDATEステートメントを使用します。

  • 関数呼び出しを確認する: コード内の関数が実行されていない場合は、それが if ステートメントの実行ブロック内にあるかどうか、またはまったく呼び出していないかどうかを確認します。

  • SQLite データベース ファイルのサイズを小さくする:VACUUMステートメントを使用します。

SQLite ステートメントを実行するには、それを準備する必要があります。に関するSQLite.orgのドキュメントsqlite_prepareから:

SQL クエリを実行するには、最初にこれらのルーチンのいずれかを使用してバイトコード プログラムにコンパイルする必要があります。

于 2013-08-06T11:30:14.043 に答える