【问题标题】:Programmatically execute VACUUM command using Sqlite3 and C++?使用 Sqlite3 和 C++ 以编程方式执行 VACUUM 命令?
【发布时间】:2017-10-13 23:59:39
【问题描述】:

我正在尝试使用 C++ 的 Sqlite3 库以编程方式在 C++ 中执行 VACUUM 命令。请参阅C-language Interface Specification for SQLite 处的参考资料。

有人可以提供如何执行此操作的代码 sn-p 吗?我尝试调用它,但它给出了一个异常:

此代码在我的 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 occurred %s", e.what());
}

输出是

EXCEPTION occurred std::exception

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

【问题讨论】:

标签: c++ sqlite vacuum


【解决方案1】:

您可以使用 sqlite3 中的 sqlite3_exec() api。

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

【讨论】:

    【解决方案2】:
    PRAGMA auto_vacuum = FULL;
    

    那么你就不用担心了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 2013-01-26
      • 2014-05-17
      • 1970-01-01
      相关资源
      最近更新 更多