我在 flutter 中创建了一个数据库 main.db,位于 ApplicationDocumentsDirectory.path。这工作没有任何问题。
但是为了更轻松地维护并且不必总是创建 SQL 语句来查看数据或结构,我希望获得一个 GUI 来查看数据库。首先,我想使用 Browser DB for SQLite,但我不知道数据库保存在我的笔记本上的什么位置(如果是的话)。我也无法通过 Ransack 特工找到它。
有没有办法找到数据库,或者有没有更简单的方法在 GUI 上查看数据库?
如果有帮助的话,我使用 Visual Studio Code 进行开发。
对于 Android,我发现的最简单的方法就是在我的计算机上安装 Android Studio。在 Android Studio 中,您可以通过 Device File Explorer
查看设备上的数据库View > Tool Windows > Device File Explorer.
在新选项卡中,确保选择您的设备 例如
MyAndroidDevice > data > data >com.myflutterapp
在这里您将找到您的 Flutter 应用程序文件,主数据库将位于'app_flutter 文件夹'。
找到数据库文件后,右键单击并另存为。然后,您可以使用 BrowserDB 或 sqlitebrowser 打开此数据库文件。
使用 Xcode 可能也有类似的方法,但我对那个特定的 IDE 不太熟悉。
由于这是 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 驱动程序。
就我而言,我遇到了 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 线程)。
除了 F-1 答案之外,如果您需要更复杂的工具来管理数据库,还有 SQLite Studio。您可以执行以下步骤来实现此目的:
获取数据库(使用adb):
adb -s emulator-5554 拉 /data/data/com.your.package.yourappname/databases/you_database_name.db .
如果您需要更改并更新(它将覆盖android db)
adb -s emulator-5554 Push ~/Desktop/you_database_name.db /data/data/com.your.package.yourappname/databases/
这里是 SQLite Studio 的链接(适用于 macOS、Linux 和 Windows) https://sqlitestudio.pl/
如果您来这里寻找 macOS 解决方案,VS Code 有一个 SQLite 扩展,如果您将 db 文件保存在
getDatabasesPath()
目录下,您可以在这里找到它:
/Users/USERNAME/Library/Containers/com.example.flutterApp/Data/Documents
我的在这里:
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
对于未来的开发者,在新版本的 Android Studio Iguana | 2023.2.1 补丁 2