1

我有一个使用 SQLite 数据库浏览器创建的数据库的 android 应用程序,如本博客所示:http ://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

首先,我创建了一个包含两个表的数据库,其中一个表有一个条目,只是为了检查我是否正确创建了数据库。这行得通。

之后,我用另外 10 个条目填充其中一个表,保存,然后将数据库复制到资产文件夹(覆盖前一个),运行应用程序,然后查询第 2 到第 10 个条目。该应用程序是强制关闭给我 CursorIndexOutOfBounds 错误。

由此,我推断该应用程序无法使用我创建的新数据库并且仍在使用旧数据库(已被覆盖)。

有没有办法解决和/或解决这个问题?应用程序似乎正在使用它接收到的数据库的第一个版本,即使该数据库已被新版本覆盖。

4

1 回答 1

1

听起来您的第一个数据库,只有一个条目的数据库,仍然存在于 /data/data/your-package-name 下的应用程序数据库文件夹中(在您的 android 设备上)。如果设备上不存在数据库,该教程的代码只会从 assets 文件夹中复制数据库(查看教程中的 checkDataBase() 方法)。因此,从 /data/data/your-package-name 中删除数据库(使用代码或使用 root 访问权限),确保更新的数据库文件位于 assets 文件夹中,然后再次运行它。这将确保资产文件夹中的数据库被复制到设备上。

此外,请确保 DB_PATH 等于context.getApplicationInfo().dataDir + "/databases/"而不是"/data/data/YOUR_PACKAGE/databases/".

于 2013-01-10T15:48:48.080 回答