【问题标题】:Can text or string as Primary Key in sqlite android可以将文本或字符串作为sqlite android中的主键吗
【发布时间】:2017-05-18 05:49:51
【问题描述】:

您好,我有这样的 json,现在我想将此 json 保存到 sqlite android,但是 我很困惑如何为这个json创建一个表,json结果是字符串/文本类型但是我们知道在创建表sqlite中我们需要整数类型的数据作为主键。

我想使用 UserId 作为主键,但这是文本/字符串类型。

我的问题可以创建以字符串/文本作为主键的表吗? 如果您有另一种方法将此 json 保存到 sqlite,请告诉我如何做到这一点。在此先感谢...

[
      {
        "UserId": "3c652fc4-5dc4-4fa5-8c07-d27b0b657823",
        "Nationality": "ID",
        "Image": null,
        "IsAlreadyOnTextoaser": true,
        "IsAlreadyOnRequest": false,
        "LastActive": null,
        "LastActiveResume": "0 Days Ago",
        "FirstName": "dwi",
        "LastName": "wahyudi"
      },
      {
        "UserId": "cbb1f8bd-8016-4bc6-abd1-701fb353293d",
        "Nationality": "ID",
        "Image": null,
        "IsAlreadyOnTextoaser": true,
        "IsAlreadyOnRequest": false,
        "LastActive": null,
        "LastActiveResume": "0 Days Ago",
        "FirstName": "Wildan",
        "LastName": "Rachman"
      }
    ]

【问题讨论】:

标签: android sql json database sqlite


【解决方案1】:

Android 框架的许多部分都希望您的数据有一个名为 _id 的唯一整数列。

(获取此类列的最简单方法是使其成为自动递增的主键,但如果您的数据已经有这样的列,或者如果可以轻松地从其他值计算出唯一值,则不需要需要一个明确的。)

虽然 PRIMARY KEY 约束记录了哪一列标识了行,但实际的技术效果与 NOT NULL 和 UNIQUE 相同。所以你的表中可以有多个候选键:

CREATE TABLE MyTable (
    _id       INTEGER PRIMARY KEY,      -- autoincrementing, for Android
    UserId    TEXT    NOT NULL UNIQUE,  -- actual PK 
    FirstName TEXT,
    [...]
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-19
    • 2011-04-03
    • 1970-01-01
    • 2013-07-12
    • 2011-05-04
    • 2011-12-04
    • 2018-08-30
    • 1970-01-01
    相关资源
    最近更新 更多