【问题标题】:Android SQLiteException: near ",": syntax error: , while compiling INSERT [duplicate]Android SQLiteException:在“,”附近:语法错误:,编译插入时[重复]
【发布时间】:2015-01-11 22:46:09
【问题描述】:

我正在尝试将值插入表中

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 及更高版本的多台设备上进行了测试,运行良好。

有人知道是什么问题吗?

【问题讨论】:

  • 都是关于 sqlite 版本的...

标签: android sqlite


【解决方案1】:

sqlite 版本3.7.11引入了多值语法

Sqlite version 3.7.11 is only in Android 4.1 and up.

将您的插入内容拆分为单独的插入内容,一次一行。

【讨论】:

    【解决方案2】:

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

    但即使你解决了问题,这仍然是一个糟糕的方法。您应该使用PreparedStatement 来转义和绑定变量。它会更不容易出错。作为额外的奖励,您将更安全地免受 SQL 注入攻击。

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 1970-01-01
      • 2020-05-19
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多