在我的Android应用程序中,我试图使用以下代码行:
Process runJob = Runtime.getRuntime().exec("sqlite3 /data/data/com.android.launcher/databases/launcher.db \"INSERT INTO favorites VALUES(100,'someText');\"");
但它不起作用。在stderr中有一条消息
03-12 13:41:44.841: I/some(3084): stderr = sqlite3: Error: too many options: "INTO"
03-12 13:41:44.841: I/some(3084): stderr = Use -help for a list of options.
任何想法如何解决这个问题?
答案 0 :(得分:3)
exec(String)
将输入拆分为空格,并且不像shell那样遵守"
引号。
改为使用exec(String[])
:
...exec(new String[] {
"sqlite3",
"/data/data/com.android.launcher/databases/launcher.db",
"INSERT INTO favorites (column1, column2) VALUES(100,'someText');"
});
(没有考虑到你正在尝试做的事情实际上是有意义的。)
答案 1 :(得分:0)
为避免插入操作中出现任何冲突,请将insert
与属性和值一起使用,如下所示:
Process runJob = Runtime.getRuntime().exec("sqlite3 /data/data/com.android.launcher/databases/launcher.db \"INSERT INTO favorites (column1, column2) VALUES(100,'someText');\"");