如何在square sqldelight中进行批量插入?

时间:2016-11-14 18:16:26

标签: android sqlite square sqldelight

感谢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();

有没有办法一次性为数据列表执行批量插入?

1 个答案:

答案 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文件端的任意大小的批量插入。