2016-11-14 1 views
0

Danke Platz für SQLDelight und bietet typsichere APIs für sqlite db Interaktionen. Ich mache einzelne Einfügereihe wie folgt:Wie fügt man Bulk-Insertion in quadratischen sqldelight?

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

Gibt es eine Möglichkeit, Bulk-Insertion für eine Liste von Daten auf einmal durchzuführen?

Antwort

1

Art von. Es gibt zwei Ansätze. Da SQLite 3.7.11 (im Android API 16 und höher) können Sie mehrere Werte auf einmal von der SQLite-Seite einfügen:

INSERT INTO myTable 
VALUES (?, ?), (?, ?), (?, ?); 

das ist wahrscheinlich nicht das, was Sie wollen. Solange Sie nur einmal die Erstellung der Insert-Anweisung sind, verbindlich und mehrere Zeilen Ausführung ist eigentlich wirklich schnell:

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(); 
} 

, die wahrscheinlich näher ist, was Sie wollen. Im Moment gibt es keine geplante Unterstützung von Masseneinfügungen beliebiger Größe von der .sq-Dateiseite.

Verwandte Themen