需要从assests文件导入一个已创建好的数据库文件到APP的databases目录,代码在android 9.0以下系统运行正常。在android 9.0系统的手机中,文件虽成功导入但仍找不到表。说明程序并没有从导入的数据库文件查询。
原因:9.0的sqlite3默认开启了WAL(Write-Ahead-Logging)预写式日志,数据库的工作方式发生了变化。
处理方法:手动关闭WAL,强制使用JOURNAL模式。
DatabaseHelper helper=DatabaseHelper.getInstance(context);
db=helper.getReadableDatabase();
db.disableWriteAheadLogging(); //禁用WAL模式