【问题标题】:How to reconcile android cursor '_id' column with remote server db UIDs?如何协调 android cursor '_id' 列与远程服务器 db UID?
【发布时间】:2014-07-10 18:49:43
【问题描述】:

谁能阐明如何通过游标将服务器端数据加载到 android sqlite db 与 ids 相关? 我应该在每个表中都有“_id”列并且还有一个包含我的服务器端 uid 的列吗?这似乎很尴尬。 我想念我是否可以将自己的行 ID(来自 PostgreSql 数据库)插入到“_id”列中,以及这是否有一些暗示会让我稍后感到抱歉?

【问题讨论】:

    标签: android cursor


    【解决方案1】:

    _id 仅在 CursorAdapter 中用于确定哪一列是 id。您可以在 CursorAdapter 中覆盖此行为或将查询中的别名添加到 id。

    【讨论】:

    • 好吧,我很困惑,因为像 Notepad doc 这样的文本:“每个 _id 的值在内容提供者中必须是唯一的;...... _id 应该具有类型 INTEGER PRIMARY KEY AUTOINCREMENT .. .这有助于支持引用完整性......”我的远程数据库可能会在 android 之外更新。我看不到如何使用 _id 为我自己的 uid 列起别名并使用那些远程 id - 即内容提供程序中没有 AUTOINCREMENT 列 并且 也可以在 android 上发起新行。非常感谢您对这种常见模式的帮助。谢谢亚历克斯
    • 内容提供者适用于简单的解决方案。在这种情况下,您必须能够修改数据、解决冲突等。阅读 SQLiteDatabase。正如文档所说:“如果您不需要在多个应用程序之间共享数据,您可以直接通过 SQLiteDatabase 使用数据库”。
    • 终于找到了the same issue 的人,这表明有一个额外的外键列来保存到远程数据库行ID的映射。
    • 谢谢 Dziobas - 这是真的 - 我(目前)不需要共享数据,但我得到了一个强烈的信息,如果我希望我的应用程序运行良好,共享设备资源,而不是获取关闭等。我基本上必须购买内容提供者、服务、同步适配器等。如果这不是真的,很高兴看到一个复杂的应用程序示例(即具有远程+本地数据、同步要求、身份验证等的应用程序示例) - 不使用所有这些组件 - 即不是记事本示例。
    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 2010-10-21
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多