我有一个现有的 Android 应用程序,它预先打包了一个名为 app.db 的数据库。app.db 文件位于 src/main/res/raw 中。在启动应用程序时,它会被复制到 data/data/app/databases。
db 的当前版本是 2,它是使用 SQLiteOpenHelper 设置的。我不想将此数据库绑定到任何模型对象,而只想通过运行一些 dmls 来添加或删除行。
清单看起来像这样:
<application
android:label="@string/app_name"
android:icon="@drawable/launcher"
android:name="MyApplication">
...
<meta-data android:name="DATABASE" android:value="app.db" />
<meta-data android:name="VERSION" android:value="3" />
<meta-data android:name="QUERY_LOG" android:value="true" />
</application>
MyAppplication 类扩展了 SugarApp。我在 assets 中创建了一个名为 sugar_upgrades 的文件夹,并在其中创建了一个名为 3.sql 的文件。该文件包含如下脚本:
DELETE FROM images WHERE id = 53;
但是在运行应用程序之后,这个脚本永远不会运行。我认为问题是 Sugar 期望 db 出现在 /data 文件夹中。但是在应用程序开始时它存在于 res/raw 中,这就是它无法拾取它的原因。我有什么办法可以做到这一点?