我有一个使用数据库和SQLiteAssetHelper的工作应用程序。 数据库文件(sql.sqlite)被压缩(sql.sqlite.zip)并放置在资产/数据库文件夹中。
程序运行得非常好。 如果第二次/第三次/第四次…运行它,则启动速度很快。 但是,如果我强制停止,然后清除数据,再次运行它,那么当我运行它(查看日志)时,我会看到一个错误“未知错误(代码14):无法打开数据库”...但是等待几秒钟后,一切都加载并且完美地运行。
日志如下:
程序运行得非常好。 如果第二次/第三次/第四次…运行它,则启动速度很快。 但是,如果我强制停止,然后清除数据,再次运行它,那么当我运行它(查看日志)时,我会看到一个错误“未知错误(代码14):无法打开数据库”...但是等待几秒钟后,一切都加载并且完美地运行。
日志如下:
W/SQLiteAssetHelper(18393): could not open database SQL.sqlite - unknown error (code 14): Could not open database
W/SQLiteAssetHelper(18393): copying database from assets...
W/SQLiteAssetHelper(18393): extracting file: 'sql.sqlite'...
W/SQLiteAssetHelper(18393): database copy complete
I/SQLiteAssetHelper(18393): successfully opened database SQL.sqlite
看起来好像它试图找到数据库,但失败了,然后崩溃了,最后修复了自己。我的问题是,我如何避免笨拙的开始和几秒钟的延迟?
编辑: 我在代码中对数据库的第一个引用是...
public class Globals extends Application
{
Custom_SQLiteAssetHelper db;
public void onCreate()
{
super.onCreate();
db = new Custom_SQLiteAssetHelper(this);
cursor = db.get_first_species_common_name();
而我有...
public class Custom_SQLiteAssetHelper extends SQLiteAssetHelper
{
public Custom_SQLiteAssetHelper(Context context)
{
super(context, "SQL.sqlite", null, 1);
}
public Cursor get_first_species_common_name()
{
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder querything = new SQLiteQueryBuilder();
// etc...