编译时出现SQLite语法错误:INSERT INTO

时间:2017-10-29 13:39:11

标签: java android sqlite android-sqlite runtimeexception

我在执行AsyncTask时遇到此RuntimeException:

Caused by: android.database.sqlite.SQLiteException: near ",": syntax error: , while compiling: INSERT INTO 'infrastructure' (lift,name,type,status,_id) VALUES ('2130837612','none','-','2130837600',0),('2130837612','none','-','2130837600',1),('2130837612','none','-','2130837600',2),('2130837612','none','-','2130837600',3),('2130837612','none','-','2130837600',4),('2130837612','none','-','2130837600',5)

除_id之外的所有列都是“text”,_id是整数和主键。

这就是它崩溃的地方:

Cursor curtsr = db.rawQuery("SELECT COUNT(*) FROM 'Infrastructure'", null);
if (curtsr != null) {
    curtsr.moveToFirst();                      // Always one row returned.
    if (curtsr.getInt(0) == 0) {               // Zero count means empty table.
        String INSERT_INFRA_VALUES = "INSERT INTO 'Infrastructure' (lift,name,type,status,_id) VALUES ('2130837612','none','-','2130837600',0),('2130837612','none','-','2130837600',1),('2130837612','none','-','2130837600',2),('2130837612','none','-','2130837600',3),('2130837612','none','-','2130837600',4),('2130837612','none','-','2130837600',5)";
        db.execSQL(INSERT_INFRA_VALUES);
    }
    curtsr.close();
}

我找不到它崩溃的原因。

在线SQLite lint工具https://sqliteonline.com/不会引发任何错误。

1 个答案:

答案 0 :(得分:3)

Comma-separated multiple VALUES insert仅在sqlite 3.7.11中引入,您可能正在device with older sqlite version上运行。