感谢 square 提供 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();
有没有办法一次对数据列表执行批量插入?
最佳答案
有点。有两种方法。自 SQLite 3.7.11(包含在 Android API 16 及更高版本中)起,您可以从 sqlite 端一次插入多个值:
INSERT INTO myTable
VALUES (?, ?), (?, ?), (?, ?);
这可能不是您想要的。只要您只创建一次插入语句,绑定(bind)和执行多行实际上非常快:
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 文件端进行任意大小的批量插入。
关于android - 如何在方形sqldelight中进行批量插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40595231/