gpt4 book ai didi

java - Android/ORMLite 插入带 ID 的行

转载 作者:IT王子 更新时间:2023-10-29 06:23:16 25 4
gpt4 key购买 nike

我目前正在使用 ORMLite 来处理 Android 上的 SQLite 数据库。作为其中的一部分,我正在从后端服务器下载一堆数据,我希望将这些数据以与后端服务器上完全相同的格式添加到 SQLite 数据库中(即 ID 相同等) .

所以,我的问题是,如果我通过 setId() 填充我的数据库条目对象(我们称之为设备),包括设备的 generatedId/主键字段,然后我用它运行 DAO.create()设备入口那个ID会被正确保存吗?我以这种方式尝试过,但在我看来并非如此。如果是这种情况,我会再试一次并寻找其他问题,但在前几次通过代码时我找不到问题。所以本质上,如果我在一个设置了 ID 的数据库对象上调用 DAO.create(),该 ID 会被发送到数据库吗?如果没有,我如何插入一个主键值已经填写好的行?

谢谢!

最佳答案

@Femi 是正确的,对象可以是生成的 ID ID,但不能两者都是。问题不仅仅是 ORMLite 如何存储对象,它还必须与生成数据库的模式相匹配。

ORMLite支持 @DatabaseField 注释的 allowGeneratedIdInsert=true 选项允许此行为。这不受某些数据库类型(例如 Derby)支持,但可以在 Android/SQLite 下使用。

为了后代,您还可以创建 2 个共享同一个表的对象——一个具有生成 ID,另一个没有。然后,您可以使用生成的 id Dao 插入以获取该行为,并使用另一个 Dao 获取调用者设置的 id 值。这是 another answer talking about that .你的问题听起来像是这会创建很多额外的 DAO。

唯一的其他解决方案是将 id 用于您的目的。让数据库生成 id,然后有一个您使用的额外字段,该字段是为您的目的而在外部设置的。在我看来,在某些情况下强制使用数据库 ID 是一种糟糕的模式。

关于java - Android/ORMLite 插入带 ID 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7073923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com