int sqlite3_db_cacheflush(sqlite3 *);
如果在调用sqlite3_db_cacheflush(D)接口时在数据库连接D 上打开了写入事务,则分页器高速缓存中当前未使用的所有脏页都将写到磁盘中。如果正在读取活动SQL语句创建的数据库游标,或者它是数据库文件的第1页(第1页始终为“使用中”),则可能正在使用脏页。所述sqlite3_db_cacheflush(d) 接口刷新用于所有模式的高速缓存- “主”,“TEMP”,以及任何附接的数据库。
如果此功能需要先获取额外的数据库锁,然后才能将脏页刷新到磁盘,则可以这样做。如果无法立即获得这些锁,并且配置了忙处理程序回调,则将以通常的方式调用它。如果仍然无法获得所需的锁,则将跳过数据库,并尝试刷新属于下一个数据库(如果有)的所有脏页。如果由于无法获得锁而跳过了任何数据库,但是没有发生其他错误,则此函数返回SQLITE_BUSY。
如果在将脏页刷新到磁盘时发生任何其他错误(例如IO错误或内存不足的情况),则将放弃处理,并立即将SQLite错误代码返回给调用方。
否则,如果未发生错误,则sqlite3_db_cacheflush()返回SQLITE_OK。
此函数不会设置由sqlite3_errcode()和sqlite3_errmsg()函数返回的数据库句柄错误代码或消息。