INSERT INTO RefreshTokens(name, token) VALUES('googleFit', '1/ZxDpwJIxIYQb7TtxPMuYFpIoeE0urHd6LL3dY57ghsA') ON CONFLICT(name) DO UPDATE SET token=excluded.token;
这是我的sqlite命令,用于在android中更新sqlite表。但是,它生成此错误: android.database.sqlite.SQLiteException:靠近“ ON”:语法错误(Sqlite代码1):,编译时
我已经一遍又一遍地检查,但仍然找不到错误。 “开”有什么问题?
答案 0 :(得分:2)
问题很可能是UPSERT语法仅在最近才被添加,因此您所使用的SQLite版本不支持该语法,如:-
UPSERT是对INSERT的特殊语法添加,导致INSERT 如果INSERT违反了 唯一性约束。 UPSERT不是标准的SQL。 SQLite中的UPSERT 遵循PostgreSQL建立的语法。 UPSERT语法已添加 到SQLite版本3.24.0(2018-06-04)。
答案 1 :(得分:1)
我已经一遍又一遍地检查,但仍然找不到错误。 “开”有什么问题
“ on”没什么不对,只是SQLite标准(lib)没有冲突条款。
您将必须通过“ ContentValues”运行冲突子句查询,如下所示:
ContentValues args = new ContentValues();
args.put("name", name);
args.put("token", token);
database.insertWithOnConflict("table_name", "name", args, SQLiteDatabase.CONFLICT_REPLACE)
看看以下链接,它将对您有所帮助。