如果我通过数据库浏览器更新数据库,则该数据库在我的应用中不会更改

时间:2018-12-10 14:02:53

标签: android sqlite db-browser-sqlite

我有一个使用数据库浏览器创建的SQLite数据库,将其放在资产文件中,并使用SQLiteAssetHelper进行访问。为什么如果我使用数据库浏览器更新任何记录,但在我的应用程序中却没有更改?!
另外,如果我在应用中执行插入查询,则新记录不会出现在数据库浏览器中。

2 个答案:

答案 0 :(得分:0)

如果数据库文件已存在于目标位置,则SQLiteAssetHelper不会从资产中复制数据库。

如果这是数据库中的开发时更改,则只需卸载应用程序即可删除数据库的旧版本。

如果对应用程序的发行版进行了更改,则需要实施数据库版本控制和更新脚本,如readme中所述。

  

此外,如果我在应用中执行插入查询,则新记录不会出现在数据库浏览器中。

您不是要插入相同的数据库,而是要复制一个数据库。您需要从设备中提取数据库,然后从那里进行检查。看到  例如android adb, retrieve database using run-as

答案 1 :(得分:0)

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

  1. 使用数据库浏览器创建的数据库,存储在您计算机的文件夹中。

  2. assets文件夹中的数据库,它是您使用数据库浏览器创建的数据库的副本。

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

  4. p>

在情况1中对数据库进行更改时,这些更改不会反映到assets文件夹中的数据库或仿真器/设备中。
如果要对仿真器/设备数据库进行这些更改,则必须:

  • assets删除数据库,然后将更改后的数据库浏览器数据库复制到那里。
  • 从仿真器/设备上卸载应用程序,以便删除数据库。
  • 再次运行该应用程序,以便在模拟器/设备中重新创建数据库。

当您对仿真器/设备进行更改并且想要使用数据库浏览器检查数据库时:

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