我需要在我的 Android 应用程序上预填充一个 SQLite 数据库。
我的想法是将文件放入资产文件夹。该文件的每一行都包含一个 sql 命令,例如
INSERT INTO Books(id, name) VALUES(16, 'Book X');
应用程序将逐行读取并使用原始查询将数据插入数据库。
问题是 id 列具有自动生成的 id。我认为这会与使用任意 id 产生冲突。
有人知道如何使用解决这个问题吗?
带注解的字段@DatabaseField
必须有allowGeneratedIdInsert=true
.
为避免异常,如果具有 id 的对象已经存在,则createOrUpdate
必须使用方法而不是 create。
编辑:createOrUpdate
非常耗时。最好只使用大量数据创建。
您可以使用以下 (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;
}
}
这对我有用:
@DatabaseField(columnName = sqlId, generatedId = true, allowGeneratedIdInsert = true)
并且没有其他列可以有 id=true