gpt4 book ai didi

android - 自动递增 ID 插入数据 ORMLITE

转载 作者:搜寻专家 更新时间:2023-10-30 22:13:34 25 4
gpt4 key购买 nike

我是 Android 的新手,我对 ORMLITE 有疑问。

例如,假设我有这张表:

@DatabaseTable(tableName = "accounts")
public class Account {

@DatabaseField(id = true)
private int id;

@DatabaseField(canBeNull = false)
private String name;

并且我想将新数据添加到我的表中而不设置 id

我这样试过:

@DatabaseTable(tableName = "accounts")
public class Account {

@DatabaseField(generatedId = true,allowGeneratedIdInsert=true)
private int id;

@DatabaseField(canBeNull = false)
private String name;




> Account acc = new Account();
>
> acc.setName("Example");
>
> AccountDao.createOrupdate(acc);

这里我无法将 acc 插入我的数据库,因为 acc id 为零。我想生成id。我可以使用自动增量吗?

最佳答案

Here i can't insert acc into my database because acc id is zero. I want to generate id. Can i use autoincrement ?

因此引用 allowGeneratedIdInsert field in @DatabaseField 的 javadocs :

If this is set to true then inserting an object with the ID field already set will not override it with a generated-id. This is useful when you have a table where items sometimes have IDs and sometimes need them generated. This only works if the database supports this behavior and if generatedId() is also true for the field.

因此,如果您将 acc.id 设置为非 0 值,则应该将其插入到数据库中, 来自 acc。如果您希望 acc 获得自动生成的 ID,则只需将 acc.id 设置为 0。

例如,您可以查看 ORMLite Android test class .搜索具有如下代码的 testCreateWithAllowGeneratedIdInsert() 方法:

AllowGeneratedIdInsert foo = new AllowGeneratedIdInsert();
assertEquals(1, dao.create(foo));
AllowGeneratedIdInsert result = dao.queryForId(foo.id);
assertEquals(foo.id, result.id);
...

AllowGeneratedIdInsert foo3 = new AllowGeneratedIdInsert();
foo3.id = 10002;
assertEquals(1, dao.create(foo3));
result = dao.queryForId(foo3.id);
assertEquals(foo3.id, result.id);

注意:文档提到这仅在数据库支持时有效,但 Sqlite 是这些数据库之一。

关于android - 自动递增 ID 插入数据 ORMLITE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18829713/

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