是否可以为Android模拟器的flutter中创建的SQLite数据库获取GUI?

问题描述 投票:0回答:7

我在 flutter 中创建了一个数据库 main.db,位于 ApplicationDocumentsDirectory.path。这工作没有任何问题。

但是为了更轻松地维护并且不必总是创建 SQL 语句来查看数据或结构,我希望获得一个 GUI 来查看数据库。首先,我想使用 Browser DB for SQLite,但我不知道数据库保存在我的笔记本上的什么位置(如果是的话)。我也无法通过 Ransack 特工找到它。

有没有办法找到数据库,或者有没有更简单的方法在 GUI 上查看数据库?
如果有帮助的话,我使用 Visual Studio Code 进行开发。

sqlite user-interface flutter dart
7个回答
22
投票

对于 Android,我发现的最简单的方法就是在我的计算机上安装 Android Studio。在 Android Studio 中,您可以通过 Device File Explorer

查看设备上的数据库
View > Tool Windows > Device File Explorer.

在新选项卡中,确保选择您的设备 例如

MyAndroidDevice > data > data >com.myflutterapp

在这里您将找到您的 Flutter 应用程序文件,主数据库将位于'app_flutter 文件夹'

找到数据库文件后,右键单击并另存为。然后,您可以使用 BrowserDBsqlitebrowser 打开此数据库文件。

使用 Xcode 可能也有类似的方法,但我对那个特定的 IDE 不太熟悉。


3
投票

由于这是 flutter 开发者在模拟器中浏览 sqlite 数据库的最佳 google 结果,对于其他偶然发现此问题的人来说,这里还有一个针对 iOS 模拟器的解决方案:

您需要首先找到您的 db 文件,对于 iOS,该文件位于

/Users/<youruser>/Library/Developer/CoreSimulator/Devices/
下。假设您知道数据库名称,您可以获得如下完整路径:

find /Users/<youruser>/Library/Developer/CoreSimulator/Devices/ -name "<name>.db"

例如,使用

sqflite
getDatabasesPath()
作为创建数据库的位置,我可以看到该文件位于
/Users/<youruser>/Library/Developer/CoreSimulator/Devices//<devid>/data/Containers/Data/Application/<appid>/Documents/<name>.db

如果您在多个模拟器上进行测试,您可以使用以下命令查找设备 ID:

xcrun simctl list # look under "== Devices ==" or grep for "Booted" if it's running

然后,如果

DB Browser for SQLite
很麻烦,请使用之前建议的
sqlite3
之类的工具浏览数据库。如果使用 vscode,您可以尝试使用
SQLTools
及其 SQLite 驱动程序。


2
投票

就我而言,我遇到了 Android Studio 的问题,因此创建了这个可执行脚本。

adb exec-out run-as your-package-name cat databases/your_db_name.db > your_db_name.db
sqlite3 your_db_name.db "PRAGMA wal_checkpoint"
start "DB Browser For SQLite.exe" your_db_name.db

当然,您也可以使用其他程序代替DB Browser来打开DB文件。

要回答您最初的“数据库保存在哪里”的问题,它保存在“data/data/your_package/databases”中,但如果您使用的是 Android 10+,文件管理器应用程序可能看不到包文件夹由于作用域存储,没有“特殊根模式”(reddit 线程)。


1
投票

除了 F-1 答案之外,如果您需要更复杂的工具来管理数据库,还有 SQLite Studio。您可以执行以下步骤来实现此目的:

  1. 获取数据库(使用adb):

    adb -s emulator-5554 拉 /data/data/com.your.package.yourappname/databases/you_database_name.db .

  2. 如果您需要更改并更新(它将覆盖android db)

    adb -s emulator-5554 Push ~/Desktop/you_database_name.db /data/data/com.your.package.yourappname/databases/

  3. 这里是 SQLite Studio 的链接(适用于 macOS、Linux 和 Windows) https://sqlitestudio.pl/


0
投票

如果您来这里寻找 macOS 解决方案,VS Code 有一个 SQLite 扩展,如果您将 db 文件保存在

getDatabasesPath()
目录下,您可以在这里找到它:

/Users/USERNAME/Library/Containers/com.example.flutterApp/Data/Documents

0
投票

我的在这里:

C:\Users\Gabriel\AppData\Local\Google\AndroidStudio2021.2\device-explorer\Pixel_2_API_31 [emulator-5554]\data\data\br.com.example.myapp\files\db.sqlite

0
投票

对于未来的开发者,在新版本的 Android Studio Iguana | 2023.2.1 补丁 2

  1. 转到“视图”>“工具窗口”>“应用程序检查”。
  2. 在“应用程序检查”窗口中 - 选择设备,然后选择应用程序名称。
  3. 选择数据库检查器选项卡
© www.soinside.com 2019 - 2024. All rights reserved.