Implement SQLiteDatabase::Backup
This commit is contained in:
parent
f6f9cd6a64
commit
ac5c1617e7
1 changed files with 23 additions and 1 deletions
|
@ -186,7 +186,29 @@ bool SQLiteDatabase::Rewrite(const char* skip)
|
||||||
|
|
||||||
bool SQLiteDatabase::Backup(const std::string& dest) const
|
bool SQLiteDatabase::Backup(const std::string& dest) const
|
||||||
{
|
{
|
||||||
|
sqlite3* db_copy;
|
||||||
|
int res = sqlite3_open(dest.c_str(), &db_copy);
|
||||||
|
if (res != SQLITE_OK) {
|
||||||
|
sqlite3_close(db_copy);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
sqlite3_backup* backup = sqlite3_backup_init(db_copy, "main", m_db, "main");
|
||||||
|
if (!backup) {
|
||||||
|
LogPrintf("%s: Unable to begin backup: %s\n", __func__, sqlite3_errmsg(m_db));
|
||||||
|
sqlite3_close(db_copy);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Specifying -1 will copy all of the pages
|
||||||
|
res = sqlite3_backup_step(backup, -1);
|
||||||
|
if (res != SQLITE_DONE) {
|
||||||
|
LogPrintf("%s: Unable to backup: %s\n", __func__, sqlite3_errstr(res));
|
||||||
|
sqlite3_backup_finish(backup);
|
||||||
|
sqlite3_close(db_copy);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
res = sqlite3_backup_finish(backup);
|
||||||
|
sqlite3_close(db_copy);
|
||||||
|
return res == SQLITE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SQLiteDatabase::Close()
|
void SQLiteDatabase::Close()
|
||||||
|
|
Loading…
Reference in a new issue