我試圖使用root和sqlite3來訪問數據庫以從中獲取數據。如何使用root從Android中獲取SQLite3查詢的結果
到目前爲止,我設法在logcat中顯示數據,但我無法以文件或其他方式獲取它。
使用RootCommand library這是我的代碼:
public void readDB(String message){
try {
Shell shell = Shell.startRootShell();
String setOutput= "sqlite3 .output /sdcard/number.txt"; // This didn't work because it treats .output as a database name
String readTest = "sqlite3 /data/data/com.package/databases/someDB.db \"SELECT * FROM table\";";
shell.add(new SimpleCommand(setOutput)).waitForFinish();
shell.add(new SimpleCommand(readTest)).waitForFinish();
Log.d(TAG , "finished");
} catch (IOException | TimeoutException e) {
e.printStackTrace();
Log.e(TAG, e.getMessage());
}
}
正如解釋here我用.output
指定一個文件,但它並沒有工作,因爲它把.output
作爲數據庫名稱和拋出一個異常,它可以」找到數據庫並繼續在logcat中顯示結果。
我嘗試了writefile('/sdcard/myfile.txt',column)
,但logcat中沒有文件和數據。
當我嘗試從亞行.output /sdcard/myfile.txt
它工作正常,我發現文件中的結果,但我不能讓它通過代碼
那麼做如何,無論如何得到這個數據?有沒有更好的方法來做到這一點?
PS:我沒有訪問我自己的應用程序數據,所以我不能使用sqlite數據庫輔助類。
1.是的,這是數據庫 2.拷貝數據庫文件是不是一種選擇,因爲它是非常大的變化非常快,每次改變時間,我會查詢。 3.解決了這個問題。謝謝 – Mohammad
反正有沒有得到結果作爲一個字符串變量? – Mohammad
你是什麼意思?閱讀我寫的網址。你可以輸出命令行日誌字符串和文件 – Vyacheslav