宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述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
推荐阅读
- 在React App中使用或不使用PouchDB加载预构建的SQlite数据库的正确方法是什么
- 将用户输入编辑文本与SQLite数据库Android Java进行比较
- 在Android中使用SQLite获取RowID
- 锁定AppendAllText与TextWriter
- Xamarin Android Nunit测试在测试资源管理器中可被发现,但在运行测试时未被发现。 (VS2017)
- 有人可以建议我为https://jpetstore.cfapps.io/catalog/categories/FISH创建动态xpath
- android中的自定义,禁用和空白地图
- 添加Google地图活动后,Android内置错误
- 无法找到类com.google.android.gms.maps.SupportMapFragment