2017-10-13 34 views
1

我想在C++中使用sqlite3库C++编程执行“VACUUM”命令。请参阅参考:https://sqlite.org/capi3ref.html我怎样才能执行“VACUUM”命令在C++中使用sqlite3库

有人可以给出一个如何做到这一点的代码片段?我试着调用它,但它给出了一个例外:

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

输出是发生

异常std ::例外

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

+1

考虑添加[mcve],并包含错误! – Tas

+0

添加了一些示例代码。 –

回答

-1
PRAGMA auto_vacuum = FULL; 

然后你就不用担心它了。