Как сделать массовую вставку в квадратный свет?
Спасибо за 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.