android - 如果我通过数据库浏览器更新数据库,它在我的应用程序中不会改变

标签 android sqlite android-sqlite db-browser-sqlite

我有一个使用 DB Browser 创建的 SQLite 数据库,我将其放入 Assets 文件中,然后使用 SQLiteAssetHelper 来访问它。为什么如果我使用数据库浏览器更新任何记录,它在我的应用程序中不会改变?!
另外,如果我在应用程序中执行插入查询,新记录不会出现在数据库浏览器中。

最佳答案

您正在处理 3 个不同的数据库:

  1. 您使用数据库浏览器创建的数据库存储在您电脑的文件夹中。

  2. 数据库位于 assets文件夹,它是您使用 DB Browser 创建的数据库的副本

  3. 您第一次运行应用程序时在模拟器/设备中创建的数据库。
    最后一个数据库最初是您在 assets 中拥有的数据库的副本。文件夹。

当您在情况 1 中对数据库进行更改时,这些更改不会反射(reflect)到 assets 中的数据库中。文件夹或您的模拟器/设备中。
如果您希望对模拟器/设备数据库进行这些更改,则必须:

  • assets删除数据库并将更改后的 DB Browser 数据库复制到此处。
  • 从模拟器/设备中卸载应用,以便删除数据库。
  • 再次运行应用程序,以便在模拟器/设备中重新创建数据库。

当您对模拟器/设备进行更改并希望使用 DB 浏览器检查数据库时:

  • 在 Android Studio 中选择查看 > 工具窗口 > 设备文件资源管理器
  • 设备文件资源管理器窗口中,转到data/data/yourpackagename/databases文件夹,右键单击您的数据库,然后单击另存为...。选择您想要保存数据库的文件夹即可完成。
    现在您可以使用DB Browser打开数据库。

关于android - 如果我通过数据库浏览器更新数据库,它在我的应用程序中不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53707310/

相关文章:

android - 谁能告诉我如何使用 android studio 在 android 数据库中存储地理编码器地址?

android - 使工具栏透明?

安卓动画

python - 将数据帧附加到 sqlite3 表,BLOB 而不是时间戳

java - android 如何从数据库中删除第一个插入的项目

android - 如何在 android 中更新 SQLite 中的特定行

java - 如何从sqlite数据库获取总金额值

android - Recycler View 和 View Holder Pattern 改变了布局的行为

java - 如何在列表中获取已安装的应用程序名称

python - SQLAlchemy:使用函数确定查询返回的结果