在 api 14 中获取 android Sqlite 语法错误 运行

Getting android Sqlite syntax error running in api 14

我有数据库适配器序列,它将默认值转储到表中。 它在 API 级别 19 到 21 的设备 运行 上运行良好。当我在 API 14 中尝试时。我收到语法错误。

I/SqliteDatabaseCpp﹕ sqlite returned: error code = 1, msg = near ",": syntax error, db=/data/data/com.myapp/databases/myappdb

这是我的 sql 行

private static final String DATABASE_INSERT_SEARCH =
"INSERT INTO varngle_word (name, count, type) VALUES" +
                    " ('Kindle', 0, 'item')," +
                    " ('Google', 0, 'site');";

private static class DatabaseHelper extends SQLiteOpenHelper {

        DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {

            db.execSQL(DATABASE_CREATE_SEARCH);
            db.execSQL(DATABASE_INSERT_SEARCH);
   }
}

根据this post multi-values syntax was introduced in SQLite version 3.7.11"Enhance the INSERT syntax to allow multiple rows to be inserted via the VALUES clause. "

SQLite 版本 3.7.11 仅在 Android 4.1 及更高版本中。

  • SQLite 版本 3.7.11 可用 API 级别:19、18、17、16
  • SQLite 版本 3.7.4 可用 API 级别:15、14、13、12、11

检查this post for more details about SQLite versions

或者,您可以遍历项目并逐行插入或使用以下内容:

 INSERT INTO varngle_word (name, count, type) 
 SELECT 'Kindle', 0, 'item'
  UNION
 SELECT 'Google', 0, 'site';

this Fiddle

您不能使用此语法插入多行。它出现在sqlite 3.7.11版本之后,android 4.0设备通常带有sqlite 3.7.4。

请参阅此 link (Insert Error SqLite in Android 4.0.3) 了解一些解决方案