我在构建一个具有预填充数据库的 Android 应用程序时遇到了真正的麻烦。
请查看整个source code .
我使用 sqlitebrowser 创建了一个数据库,并将其复制到我的 Android 应用程序中的“assets”目录中。
我在Java类DBAdapter.java
中添加了从 Assets 目录复制数据库的代码
在MainActivity.java
中,我调用了createDatabase
函数,因此如果数据库不存在,它应该从 Assets 目录复制数据库。创建数据库后,我调用 getAllContacts
函数并将其显示在页面上。
每当我执行该项目时,它都会抛出一个我无法调试的错误。
有人可以帮我解决这个问题吗?
更新:
Logcat 显示以下异常。似乎 asset/MyDB.db 中的“联系人”表没有被复制/创建,但我不确定为什么。
E/AndroidRuntime( 672): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.me.mydb/org.me.mydb.MainActivity}: android.database.sqlite.SQLiteException: no such table: contacts: , while compiling: SELECT _id, name, email FROM contacts
E/AndroidRuntime( 672): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime( 672): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime( 672): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime( 672): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime( 672): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 672): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 672): at android.app.ActivityThread.main(ActivityThread.java:4627)
最佳答案
这是一个很好的link开始吧。
本质上,这个想法是使用SQLiteOpenHelper
类,当不存在数据库时,您将预先播种的数据库逐字节复制到正确的位置。我在我的一个项目中稍微修改了它,但它看起来工作得很好
关于android - 预填充数据库 - Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6725515/