如何在Android上使用ORMLite在具有自动增量的表上插入具有任意id的记录?

时间:2013-09-11 01:23:01

标签: android insert ormlite

我需要在Android应用程序上预先填充SQLite数据库。

我的想法是将文件放入资源文件夹。该文件中的每一行都包含一个像

这样的sql命令
INSERT INTO Books(id, name) VALUES(16, 'Book X'); 

应用程序将逐行读取,并使用原始查询将数据插入数据库。

问题是id列有自动生成的id。我认为这会导致与使用任意id的冲突。

有人知道如何使用解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

@DatabaseField注释的字段必须为allowGeneratedIdInsert=true

为避免异常,如果id已存在的对象,则必须使用createOrUpdate方法而不是create。

编辑:createOrUpdate非常耗时。最好只使用大量数据创建。

答案 1 :(得分:0)

这对我有用:

 @DatabaseField(columnName = sqlId, generatedId = true, allowGeneratedIdInsert = true)

并且没有其他列可以拥有id = true

答案 2 :(得分:0)

  

您可以使用以下(generatedId = true)生成带数据库的自动增量整数id。

@DatabaseTable(tableName = "todo")
public class Todo {

public Todo() {

    }

   @DatabaseField(generatedId = true)
    private Integer id;


   public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

}