【发布时间】:2015-08-22 05:34:48
【问题描述】:
我有一个现有的 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 中,这就是它无法拾取它的原因。我有什么办法可以做到这一点?
【问题讨论】:
标签: android android-sqlite sugarorm