數據庫還可以這麼看 ?

大家好,我是秉心說。今天帶來的內容是 Android Studio 4.1 版本帶來的一個新功能。

對於大部分 Android 開發者來說,Sqlite 數據庫肯定不陌生。記得我人生前幾次的面試當中,還遇到過要求徒手寫一個增刪改查的客戶端。那麼,你們一般都是如何查看或者調試數據庫的呢?

你是如何查看和調試數據庫的 ?

我們都知道,數據庫文件是存在應用沙盒中的,無法直接查看。當然 root 過的手機可以直接導出來,通過 Android Studio 自帶的 Device File Explorer 也可以導出來,在 PC 端通過任何數據庫軟件都可以查看,例如 Navicat 等等。

這樣做其實很麻煩,業界一些優秀的開源庫提供了一種解決方案,那就是 Android-Debug-Database ,github 地址如下:

https://github.com/amitshekhariitbhu/Android-Debug-Database

在項目中集成之後,可以在瀏覽器端直接查看,修改,編輯當前應用的數據庫文件。不僅僅是數據庫文件,SharedPreference 文件也可以進行操作。由於都是私有目錄中的文件,其實都是一樣的原理。README 中給出了一張瀏覽器截圖,大家可以看一下:

相比原來的導出到 PC 查看,效率大大提升。最近滴滴開源的 DoraemonKit 也提供了類似的瀏覽器查看數據庫功能,相信原理也都是類似的。這裏就不再介紹了。

太麻煩了 ?

什麼?查看個數據庫還要我集成一個庫?還要我打開瀏覽器?不知道 Chrome 吃內存嗎?

其實,這種無腦的工作就應該交給 IDE 來做嘛。在 Android Studio 4.1 Canary 5 以及更高版本 上,內置了 Database Inspector ,提供了以下功能:

  • 查詢和修改表數據

  • 執行查詢語句

  • 執行 Dao 文件中定義的 Room 查詢語句

我這裏以大家比較熟悉的 sunflower 工程爲例,來演示一下以上功能。

Database Inspector 使用

查看和修改表數據

打開方式如下圖所示:

Database Inspector 會自動列出當前可調試的進程,以及該進程的應用所包含的數據庫中的所有表。如下圖所示,sunflower 應用包含 garden_plantingsplants 兩張表,分別表示 我的花園中的植物 和 所有的植物。

左側會列出應用的所有數據庫,雙擊數據庫,下拉列表中會展示出該數據庫下的所有表。雙擊表,會在右側視圖中展示當前表中的所有數據。

表中的任何數據都是可以修改的。雙擊任意一項,修改之後,回車保存。這時候你在 App 上刷新頁面,就可以看到變化。

反之,你在 App 上進行涉及到數據庫操作的修改,只需要在 Database Inspector 上點擊刷新即可看到修改。(注意,這不是實時的,你得手動刷新才能看到修改)。

你可以在我的花園中添加植物之後,再去刷新 garden_plantings 表,就可以立即看到修改了。

執行 SQL

除了查看和修改表數據,Database Inspector 還提供了一項能力,執行 SQL 語句 ,這也是大多數 PC 上的數據庫軟件所具備的功能。通過下面的動圖演示一下:

結合 Room

Room 作爲 Google 親兒子,肯定少不了優待。你在 Room 中通過 @Query 註解標記的接口方法,可以在 Android Studio 中直接執行並在 Database Inspector 中直接展示執行結果。通過下面的動圖演示一下:

從上面的 gif 也可以看到,當被執行的方法需要查詢參數時,會讓我們輸入參數。對於 @Insert@Delete 等標記的非查詢方法,是不支持直接運行的。

最後

可以說,Database Inspector 大大提升了我們的數據庫使用體驗,特別是針對 Room 。別忘了使用條件:

  • Android Studio 4.1 Canary 5 及以上版本

  • API 26 以上的手機

Android Studio 4.1 另一個大更新就是對 Jetpack Compose 的強力支持了。作爲數據驅動 UI 的完美解決方案,後續我也會持續更進。

今天的文章就到這裏了,我是一直堅持原創的秉心說,更多最新 Android 動態,掃碼關注我的公衆號吧 !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章