我试图使用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