2016-11-14 79 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文件側支持任意大小的批量插入。