upsert方法的Android sqlite语法错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
看看以下链接,它会帮助你。
以上是关于upsert方法的Android sqlite语法错误的主要内容,如果未能解决你的问题,请参考以下文章