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

How to do bulk insertion in square sqldelight?

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

这可能不是您想要的。只要您只创建一次插入语句,绑定和执行多行实际上非常快:

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