2014-03-12 46 views
0

在我的Android應用程序,我想使用的代碼以下行:「sqlite3的:錯誤:太多的選擇:‘進入’,」在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

多少種屬性並表'favorites'包含? –

+0

表中有多少列:收藏夾? –

+0

讓我看看你的CREATE TABLE查詢 –

回答

3

exec(String)分割空間上的輸入和不兌現"引號像貝殼會做。

使用exec(String[])代替:

...exec(new String[] { 
    "sqlite3", 
    "/data/data/com.android.launcher/databases/launcher.db", 
    "INSERT INTO favorites (column1, column2) VALUES(100,'someText');" 
    }); 

(不考慮,你想做什麼真正有意義。)

+1

這實際上對我有用。但現在我有另一個錯誤。 03-12 14:19:19.145:我/一些(4214):stderr =錯誤:無法打開數據庫「/data/data/com.android.launcher/databases/launcher.db」:無法打開數據庫文件 任何想法? –

0

以避免任何衝突的插入操作使用insert與屬性和值如下:

Process runJob = Runtime.getRuntime().exec("sqlite3 /data/data/com.android.launcher/databases/launcher.db \"INSERT INTO favorites (column1, column2) VALUES(100,'someText');\"");