upsert方法的Android sqlite语法错误

宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述upsert方法的Android sqlite语法错误相关的知识,希望能为你提供帮助。

INSERT INTO RefreshTokens(name, token) VALUES('googleFit', '1/ZxDpwJIxIYQb7TtxPMuYFpIoeE0urHd6LL3dY57ghsA') ON CONFLICT(name) DO UPDATE SET token=excluded.token;

这是我的sqlite命令在android中upsert sqlite表。但是,它正在生成此错误:android.database.sqlite.SQLiteException:near“ON”:语法错误(Sqlite代码1):,同时编译
我一遍又一遍地检查,仍然无法找到错误。 “开”有什么问题?
答案问题很可能是UPSERT语法最近才被添加,因此您正在使用的SQLite版本不支持,如下所示: -
UPSERT是INSERT的一种特殊语法添加,如果INSERT违反唯一性约束,则会导致INSERT表现为UPDATE或no-op。 UPSERT不是标准SQL。 SQLite中的UPSERT遵循PostgreSQL建立的语法。 UPSERT语法已添加到SQLite版本3.24.0(2018-06-04)。
SQL As Understood By SQLite - upsert
另一答案
我一遍又一遍地检查,仍然无法找到错误。 “开”有什么问题
“on”没有任何问题,只是SQLite标准(lib)没有Conflict Clause。
您必须通过'ContentValues'运行冲突子句查询,如下所示
ContentValues args = new ContentValues(); args.put("name", name); args.put("token", token); database.insertWithOnConflict("table_name", "name", args, SQLiteDatabase.CONFLICT_REPLACE)

看看以下链接,它会帮助你。
SQLite Android Official
Link 2
【upsert方法的Android sqlite语法错误】Android Sample App

    推荐阅读