Android SQLiteException:near",":语法错误:,同时编译INSERT

时间:2014-11-14 14:04:21

标签: android sqlite

我正在尝试将值插入表

public class DatabaseHandler extends SQLiteOpenHelper {
    private final static String INSERT_INTO_COUNTRIES = "INSERT INTO " + TABLE_COUNTRIES
                + " VALUES";

    @Override
    public void onCreate(SQLiteDatabase db) {
            final String countries = "('1','Andorra','93','flag_andorra','AND'),
        ('2','Austria','43','flag_flag_austria','AUT')";
        String query = INSERT_INTO_COUNTRIES + countries + ";";
        db.execSQL(query);
    }

}

并收到以下错误:

android.database.sqlite.SQLiteException: near ",": syntax error: , while compiling: INSERT INTO cardberry_countries VALUES('1','Andorra','93','flag_andorra','AND'),('2','Austria','43','flag_flag_austria','AUT');

Android 4.0.4 HTC Sense 3.6发生错误。 我在Android 4.2及更高版本上运行的多个设备上进行了测试,它运行良好。

有人知道这是什么问题吗?

2 个答案:

答案 0 :(得分:6)

在sqlite版本3.7.11

中引入了多值语法

Sqlite version 3.7.11 is only in Android 4.1 and up

将插入物拆分为单独的插入物,一次一行。

答案 1 :(得分:1)

如果打印出SQL INSERT字符串,它会更容易被发现。

但即使你解决了这个问题,这仍然是一个糟糕的方法。您应该使用PreparedStatement来转义和绑定变量。它不容易出错。你可以从SQL注入攻击中获得额外的奖励。