【问题标题】:Android sqlite syntax error for upsert methodupsert方法的Android sqlite语法错误
【发布时间】:2018-07-10 13:19:08
【问题描述】:
INSERT INTO RefreshTokens(name, token) VALUES('googleFit', '1/ZxDpwJIxIYQb7TtxPMuYFpIoeE0urHd6LL3dY57ghsA') ON CONFLICT(name) DO UPDATE SET token=excluded.token;

这是我在 android 中插入 sqlite 表的 sqlite 命令。但是,它正在生成此错误: android.database.sqlite.SQLiteException:接近“ON”:语法错误(Sqlite 代码 1):,编译时

我检查了一遍又一遍,仍然找不到错误。 “开”有什么问题?

【问题讨论】:

标签: android sql sqlite


【解决方案1】:

问题很可能是最近才添加了 UPSERT 语法,因此您使用的 SQLite 版本不支持:-

UPSERT 是对 INSERT 的一种特殊语法,它会导致 INSERT 如果 INSERT 违反了 唯一性约束。 UPSERT 不是标准 SQL。 SQLite 中的 UPSERT 遵循 PostgreSQL 建立的语法。 添加了 UPSERT 语法 到版本 3.24.0 (2018-06-04) 的 SQLite

SQL As Understood By SQLite - upsert

【讨论】:

    【解决方案2】:

    我检查了一遍又一遍,仍然找不到错误。 “开”有什么问题

    “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)
    

    看看下面的链接,它会帮助你。

    SQLite Android Official

    Link 2

    Android Sample App

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多