我有一个可通过事务写入数据库的应用程序.我知道sqlite会写入日志文件,然后在日志文件达到一定大小后将其合并.我还具有尝试将数据库文件复制到另一个位置的功能.我的问题是我找不到强迫sqlite将日志合并到主数据库中的方法.
我所有的查询看起来像这样
sqliteDatabase database =null;try{ database = getReadableDatabase(); //PERFORM SOME INSERT } catch (Exception e){ Log.e(TAG, "Error with insert"); } finally { if( database != null){ database.close(); } }
这些方法执行后,我将关闭应用程序并检查应用程序保存其数据库的目录.我可以看到数据库文件和数据库新闻.
我正在尝试做类似的事情
public voID copyDatabase(){ //FORCE MERGE //DO OTHER OPERATIONS}
在需要时,有人对如何合并日记文件有任何想法吗?
解决方法:
该日志仅包含有关未提交交易的信息.如果您确定没有从任何地方打开数据库,则说明日记文件没有被使用,可以简单地复制核心数据库文件.
细节
sqlite有multiple journal modes,其中包括DELETE,它在最后一个事务终止时删除日记.
但是,androID下的default journal mode是PERSIST,这意味着即使当前不使用日志文件,数据库引擎也不会自动删除该日志文件.
可以在AndroID中更改日志模式:Android SQLite – changing journal_mode
db.rawquery("PRAGMA journal_mode=OFF", null).close();
请注意07003,但是:
总结When using enableWriteAheadLogging(), journal_mode is automatically managed by this class. So, do not set journal_mode using “PRAGMA journal_mode'” statement if your app is using enableWriteAheadLogging()
以上是内存溢出为你收集整理的我如何强制sqlite将日志文件合并到主数据库中?全部内容,希望文章能够帮你解决我如何强制sqlite将日志文件合并到主数据库中?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)