我有一个Android应用程序,它使用由SQLite数据库浏览器创建的数据库,如本博客所示:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
首先,我创建了一个包含两个表的数据库,其中一个表有一个条目,只是为了检查我是否正确地创建了数据库。这很有用。
之后,我用其他10个条目填充其中一个表,保存,然后将数据库复制到assets文件夹(覆盖前一个),运行应用程序,然后查询第2-10个条目。应用程序强制关闭,给我CursorIndexOutOfBounds错误。
据此,我推断应用程序在某种程度上无法使用我创建的新数据库,并且仍在使用旧数据库(已被覆盖)。
有没有办法解决和/或解决这个问题?该应用程序似乎正在使用它接收的第一个数据库版本,即使该数据库被新数据库覆盖。
答案 0 :(得分:1)
听起来你的第一个数据库,只有一个条目,仍然存在于/ data / data / your-package-name下的应用程序数据库文件夹中(在你的Android设备上)。如果设备上不存在数据库,该教程的代码将仅从assets文件夹复制数据库(请参阅教程中的checkDataBase()方法)。因此,从/ data / data / your-package-name删除数据库(使用代码或root访问权限),确保更新的DB文件位于assets文件夹中,然后再次运行。这将确保资产文件夹中的数据库被复制到设备上。
另外,请确保DB_PATH等于context.getApplicationInfo().dataDir + "/databases/"
而不是"/data/data/YOUR_PACKAGE/databases/"
。