如果您没有足够的时间阅读@NickDandoulakis 的答案发布的整个文档,只需将以下函数(已在链接中提到)复制并粘贴到您的代码中:
int loadOrSaveDb(sqlite3 *pInMemory, const char *zFilename, int isSave)
{
int rc; /* Function return code */
sqlite3 *pFile; /* Database connection opened on zFilename */
sqlite3_backup *pBackup; /* Backup object used to copy data */
sqlite3 *pTo; /* Database to copy to (pFile or pInMemory) */
sqlite3 *pFrom; /* Database to copy from (pFile or pInMemory) */
rc = sqlite3_open(zFilename, &pFile);
if (rc == SQLITE_OK)
{
pFrom = (isSave ? pInMemory : pFile);
pTo = (isSave ? pFile : pInMemory);
pBackup = sqlite3_backup_init(pTo, "main", pFrom, "main");
if (pBackup) {
(void)sqlite3_backup_step(pBackup, -1);
(void)sqlite3_backup_finish(pBackup);
}
rc = sqlite3_errcode(pTo);
}
(void)sqlite3_close(pFile);
return rc;
}
然后将 SQLite 数据库的数据(在内存中)保存到文件调用中:
loadOrSaveDb(db_con, target_file, 1);
这db_con
是您的数据库连接对象指针,target_file
是目标文件地址。
备注:如果要将 SQLite 数据库文件加载到内存中,只需运行:
loadOrSaveDb(db_con, target_file, 0);