sqlite实时备份

include

int CAceaDbProc::BackupDB(sqlite3 pDb, const char zFilename, void(*xProgress)(int, int))
{
HANDLE handle = GetCurrentProcess();
PROCESS_MEMORY_COUNTERS pmc;
CString strLog = NULLSTR;

const int iConversionRate = 1024 * 1024;
const int iPageCountEachLoop = 10000;

int rc; / Function return code /
sqlite3 pFile; / Database connection opened on zFilename /
sqlite3_backup
pBackup; / Backup handle used to copy data /

/ Open the database file identified by zFilename. /
rc = sqlite3_open(zFilename, &pFile);

CString strPassword = “AceASyS”;
rc = sqlite3_key(pFile, strPassword, strPassword.GetLength());

if (rc == SQLITE_OK) {

/ Open the sqlite3_backup object used to accomplish the transfer /
pBackup = sqlite3_backup_init(pFile, “main”, pDb, “main”);
if (pBackup) {

/ Each iteration of this loop copies 5 database pages from database
pDb to the backup database. If the return value of backup_step()
indicates that there are still further pages to copy, sleep for
250 ms before repeating. /
do {
rc = sqlite3_backup_step(pBackup, iPageCountEachLoop);
xProgress(
sqlite3_backup_remaining(pBackup),
sqlite3_backup_pagecount(pBackup)
);

//获取目前进程内存+目标文件大小,实时查看
GetProcessMemoryInfo(handle, &pmc, sizeof(pmc));

double dFileZize = CHelper::GetFileSize(zFilename, 1);
strLog.Format(“内存使用:%d MB,%d MB,%d MB,%d MB, 目标文件大小: %f KB\n”,
pmc.WorkingSetSize / iConversionRate, pmc.PeakWorkingSetSize / iConversionRate,
pmc.PagefileUsage / iConversionRate, pmc.PeakPagefileUsage / iConversionRate, dFileZize);
CImageHelper::SaveToLogFile(“DBBackupLog.txt”, strLog);
//

if (rc == SQLITE_OK || rc == SQLITE_BUSY || rc == SQLITE_LOCKED) {
sqlite3_sleep(250);
}
} while (rc == SQLITE_OK || rc == SQLITE_BUSY || rc == SQLITE_LOCKED);

/ Release resources allocated by backup_init(). /
(void)sqlite3_backup_finish(pBackup);
}
rc = sqlite3_errcode(pFile);
}

/ Close the database connection opened on database file zFilename
and return the result of this function. /
(void)sqlite3_close(pFile);

return rc;
}

Original: https://blog.csdn.net/ucliaohh/article/details/122579347
Author: ucliaohh
Title: sqlite实时备份

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/815878/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球