感谢SQLDelight的广场,并为sqlite数据库交互提供了类型安全的api。我正在做单个插入行,如下所示:
MyTable.Insert_row insert_row =
new MyTableModel.Insert_row(
mOpenHelper.getWritableDatabase(),
MyTable.FACTORY
);
MyTable.bind(insert_row, data);
insert_row.program.executeInsert();
有没有办法一次性为数据列表执行批量插入?
答案 0 :(得分:1)
有点儿。有两种方法。自SQLite 3.7.11(包含在Android API 16及更高版本中)以来,您可以从sqlite端一次插入多个值:
INSERT INTO myTable
VALUES (?, ?), (?, ?), (?, ?);
这可能不是你想要的。只要您只创建一次insert语句,绑定和执行多行实际上非常快:
MyTable.Insert_row insert_row =
new MyTableModel.Insert_row(
mOpenHelper.getWritableDatabase(),
MyTable.FACTORY
);
for (Row row : rows) {
MyTable.bind(insert_row, row);
insert_row.program.executeInsert();
}
这可能更接近你想要的。目前,没有计划支持.sq文件端的任意大小的批量插入。