2017-10-13 451 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; 

然後你就不用擔心它了。