2015-03-11 5 views
0

Это мое первое приложение с базой данных, я надеюсь, что кто-то может помочь мне понять эту проблему. У меня есть этот метод вставки:Вставить данные в базу данных в Android

public long insertData(String name, int password){ 

     .... 
     contentValues.put(KEY_NAME, name); 
     contentValues.put(KEY_PASSWORD, password); 

     return db.insert(DBHelper.TABle_NAME, null, contentValues); 
    } 

я могу вставить несколько данных с помощью этого метода, но как насчет если у меня есть тысячи строк? как я могу вставить все эти данные в базу данных? где я могу написать все эти данные, в дополнительном классе или что?

ответ

0

Как уже говорили другие, вам нужно сделать какой-то итерации. Эффективность может быть достигнута путем проведения крупной транзакции . Вот пример:

public int bulkInsert(@NonNull ContentValues[] values) { 
    int insertCount = 0; 
    SQLiteDatabase db = mSqlHelper.getWritableDatabase(); 
    try { 
     db.beginTransaction(); 
     for (ContentValues value : values) { 
      if (db.insertOrThrow(tableName, null, value) == -1) { 
       throw new Exception("Unknown error while inserting entry in database."); 
      } 
      insertCount++; 
     } 
     db.setTransactionSuccessful(); 
    } catch (Exception e) { 
     Log.e(LOG_TAG, "An error occurred while bulk-inserting database entries.\n" + e.getMessage(), e); 
    } finally { 
     db.endTransaction(); 
    } 
    return insertCount; 
} 
+0

Я не мог понять, зачем мне нужен Uri, я не использую здесь сеть. –

+0

Мой метод просто является частью [поставщика контента] (http://developer.android.com/guide/topics/providers/content-provider-basics.html), я отредактирую его для упрощения. – Jon

+0

Я думаю, контент-провайдер был хорошей идеей! –

0

Объекта «объемной загрузки», о котором я знаю. Вам просто нужно прокрутить список и вставить элементы.

Возможно, вам захочется подумать о том, почему вы пытаетесь вставить тысячи элементов в базу данных на аппаратном ограниченном устройстве, таком как телефон или планшет.

Возможно, лучше разместить данные на сервере и создать API, который вы можете использовать для загрузки данных (для отображения) по страницам?

0

вы можете сделать это таким же образом, что вы делаете с некоторыми данными, вам нужно только поймать тысячи строк, чтобы вставить в вашу базу данных с помощью метода, вы можете использовать asyntask или услугу, чтобы сделать это

0

Вы можете использовать тот же метод для вставки любого количества записей, будь то 1 или 1000. Используйте цикл для вызова метода вставки и добавления записей в вашу базу данных. Подумайте о том, чтобы выполнить ваши работы с базой данных в AsyncTask, чтобы предотвратить зависание потока пользовательского интерфейса.

Ваши данные могут поступать из любой точки мира, до тех пор, как он отформатирован, чтобы соответствовать вашей функции параметров String, int