我需要在Android应用程序上预先填充SQLite数据库。
我的想法是将文件放入资源文件夹。该文件中的每一行都包含一个像
这样的sql命令INSERT INTO Books(id, name) VALUES(16, 'Book X');
应用程序将逐行读取,并使用原始查询将数据插入数据库。
问题是id列有自动生成的id。我认为这会导致与使用任意id的冲突。
有人知道如何使用解决这个问题吗?
答案 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;
}
}