我怎样才能执行" VACUUM"使用sqlite3库在C ++中执行命令

时间:2017-10-13 23:59:40

标签: c++ sqlite

我正在尝试以编程方式执行" VACUUM" c ++使用sqlite3库进行C ++命令。请参阅此处的参考:https://sqlite.org/capi3ref.html

有人可以提供如何执行此操作的代码段吗?我试着调用它,但它给出了一个例外:

此代码位于我的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());
}

输出

  

EXCEPTION发生了std :: exception

SqliteDb.cpp是一个经过测试的类,适用于使用此类的其他组件。

2 个答案:

答案 0 :(得分:0)

您可以使用来自sqlite3的sqlite3_exec()API。

sqlite3_exec(db, "VACUUM", 0, 0, 0);

答案 1 :(得分:-2)

PRAGMA auto_vacuum = FULL;

然后你不必担心它。