2016-11-14 71 views
0

感谢Square for SQLDelight并为sqlite数据库交互提供类型安全api。我正在做单插入行如下:如何在正方形sqldelight中进行批量插入?

 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文件侧支持任意大小的批量插入。