SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Android:Wstawianie zbiorcze, gdy funkcja InsertHelper jest przestarzała

SQLiteStatement posiada również metody wiązania, rozszerza SQLiteProgram.

Po prostu uruchom go w transakcji:

    final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
    final SQLiteStatement statement = db.compileStatement(INSERT_QUERY);
    db.beginTransaction();
    try {
        for(MyBean bean : list){
            statement.clearBindings();
            statement.bindString(1, bean.getName());
            // rest of bindings
            statement.execute(); //or executeInsert() if id is needed
        }
        db.setTransactionSuccessful();
    } finally {
        db.endTransaction();
    }

EDYTUJ

Nie mogę znaleźć fajnego rozwiązania w SQLiteQueryBuilder, ale jest to tak proste, jak:

final static String INSERT_QUERY = createInsert(DbSchema.TABLE_NAME, new String[]{DbSchema.NAME, DbSchema.TITLE, DbSchema.PHONE});

static public String createInsert(final String tableName, final String[] columnNames) {
    if (tableName == null || columnNames == null || columnNames.length == 0) {
        throw new IllegalArgumentException();
    }
    final StringBuilder s = new StringBuilder();
    s.append("INSERT INTO ").append(tableName).append(" (");
    for (String column : columnNames) {
        s.append(column).append(" ,");
    }
    int length = s.length();
    s.delete(length - 2, length);
    s.append(") VALUES( ");
    for (int i = 0; i < columnNames.length; i++) {
        s.append(" ? ,");
    }
    length = s.length();
    s.delete(length - 2, length);
    s.append(")");
    return s.toString();
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WinDeath w powiadomieniuDataSetChanged()

  2. Robolectric uzyskujący dostęp do bazy danych zgłasza błąd

  3. SQLite UPUŚĆ WIDOK

  4. Odejmij lata od daty w SQLite

  5. Nie można wstawić rekordu do bazy danych SQLite z usługi Firebase Message Service, gdy aplikacja jest w tle lub w stanie zamkniętym