Как сделать массовую вставку в квадратный свет?

Спасибо за SQLDelight и предоставляя типизированные API-интерфейсы для взаимодействия с sqlite db. Я делаю одну строку вставки, как показано ниже:

      MyTable.Insert_row insert_row =
    new MyTableModel.Insert_row(
      mOpenHelper.getWritableDatabase(),
      MyTable.FACTORY
    );
  MyTable.bind(insert_row, data);
  insert_row.program.executeInsert();

Есть ли способ выполнить массовую вставку для списка данных сразу?

1 ответ

Решение

Вид. Theres два подхода. Начиная с 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.

Другие вопросы по тегам