2017-10-13 8 views
1

C++でsqlite3ライブラリを使用してプログラムで "VACUUM"コマンドを実行しようとしています。ここに参照を参照してください:https://sqlite.org/capi3ref.htmlsqlite3ライブラリを使用してC++で "VACUUM"コマンドを実行するには

誰かがこれを行う方法のコードスニペットを与えることができますか?私はこれを呼び出してみましたが、例外があります。

このコードは、SqliteDb.cppヘルパークラスにあります。私のメインクラスで

void SqliteDb::executeSql(const string& sqlStatement) { 
    char* errMsg = NULL; 
    sqlite3_exec(db, sqlStatement.c_str(), NULL, NULL, &errMsg); 
    if (errMsg != NULL) { 
    string reason = string("Error in") + sqlStatement + " " + errMsg; 
    sqlite3_free(errMsg); 
    __throw_sqlitedb(reason); 
    } 
} 

は私がやった:

try{ 
    db = new SqliteDb(filepath); 
    db->executeSql("VACUUM;"); 
} catch (std::exception e) { 
    printf("EXCEPTION occured %s", e.what()); 
} 

出力は

例外が

SqliteDb.cppがテストクラスではstd ::例外が発生しましたこのクラスを使用する他のコンポーネントでうまく動作します。

+1

[mcve]を追加して、エラーを含めることを検討してください。 – Tas

+0

サンプルコードをいくつか追加しました。 –

答えて

-1
PRAGMA auto_vacuum = FULL; 

あなたはそれについて心配する必要はありません。

関連する問題