天天看點

檢視Android SQLite資料庫adb,error: more than one device and emulator

Android APP的資料庫檔案一般放在  data/data/{應用包名}/databases/ 檔案夾下。檢視資料庫檔案有兩種方式:   1、adb方式,可實時更新: 確定裝置已經root。假如你已經通過代碼建立了一個資料庫叫test.db,并且建立了一張表叫 table_user。那麼 打開終端(windows 運作->cmd ) 輸入 adb shell,前提你已經配置過adb 的環境變量(mac 和 Windows 配置方法請自行百度),然後回車。這是時候就會進入 Linux的指令模式。然後cd 到 data/data/{你的應用包名}/databases/ 目錄,ls 下,你會發現, 你所建立的test.db的資料庫就出來了。OK,然後在終端輸入 sqlite3 test.db 回車,進入sqlite 指令,好了,精彩的時刻就要到了,比如我們要檢視test.db 下有哪些表,我們用 .tables 指令  回車,哎呀呀, table_user 就出現了。 其實在 終端輸入的 sqlite3 指令之後,你就可以輸入sql 語句了:比如 select * from table_user 等sql 語句。 具體操作如下:

C:\Users\D.bj>adb devices
List of devices attached
127.0.0.1:62001 device
MRB6BUVG99999999        unauthorized

C:\Users\D.bj>adb -s 127.0.0.1:62001 shell
[email protected]:/ # cd data/data/com.fac.ima/database/
/system/bin/sh: cd: /data/data/com.fac.ima/database: No such file or directory
2|[email protected]:/ # cd: data/data/com.fac.ima/database/
/system/bin/sh: cd:: not found
127|[email protected]:/ # cd data/data/com.fac.ima/databases/
[email protected]:/data/data/com.fac.ima/databases #
           

  2、直覺模式,不可實時更新:請root你的裝置,因為 data/data/ 下的檔案及檔案夾需要root才能可見。同樣,假如你已經通過代碼建立了一個資料庫叫test.db,并且建立了一張表叫 table_user。OK,我們可以通過ADM(Android Device Monitor) 的 DDMS 的File explorer 直接進入 data/data/{你的應用包名}/databases/ 目錄,把test.db 檔案push 出來,然後可通過軟體SQLite Expert Professional 檢視,或者 通過 root explorer 檔案管理器,進入data/data/{你的應用包名}/database/ 目錄,打開test.db , 這個方法需要手機上裝個能夠檢視資料庫的軟體哦。也可以通過Navicat檢視資料庫檔案。

方法一使用adb指令時輸入adb shell,報錯error: more than one device and emulator

C:\Users\gaojs>adb shell error: more than one device and emulator C:\Users\gaojs>adb install e:\good.apk error: more than one device and emulator

碰到這種情況,首先要查一下,是不是真的有多個裝置或模拟器。 C:\Users\gaojs>adb devices List of devices attached emulator-5554   device 4dfadcb86b00cf05        device 發現還真是多個裝置,那就需要為ADB指令指定裝置的序列号了。 C:\Users\gaojs>adb -s emulator-5554 shell 也就是如上所示,給指令加上-s的參數就可以了!

如果實際上隻有一個裝置或模拟器,并且查到有offline的狀态; 那就說明是ADB本身的BUG所導緻的,就需要用如下的方法處理下了: C:\Users\gaojs>adb kill-server C:\Users\gaojs>taskkill /f /im adb.exe 第一條指令是殺ADB的服務,第二條指令是殺ADB的程序! 如果第一條沒有用,才考慮用第二條指令再試試看的!