Эффективный способ вставки нескольких записей в базу данных sqlite

Мне нужно заполнить мою базу данных sqlite. Мне нужно сделать это, используя вставку нескольких записей. В ходе изучения я обнаружил, что существуют различные способы достижения этого, такие как функция bulkinsert(), массив ContentValues[] и т. д. Но я решил использовать SELECT и UNION SELECT. Я создал класс SQLiteOpenHelper, и теперь мне нужно добавить сразу несколько записей с помощью следующего запроса:

 db.execSQL("INSERT INTO "+tourEntry.TABLE+
        " SELECT "+tourEntry._ID+" AS 'Tour_ID', "+tourEntry.TOURTYPE+" AS 'Tour_Type', "+tourEntry.TOURNAME+" AS 'Tour_Name', "+tourEntry.NIGHTS+" AS 'Nights', "+tourEntry.DAYS+" AS 'Days', "+tourEntry.PIC+" AS Pic" +
        " UNION SELECT '1', '3', 'Delhi Tour', '1', '2', 'img/mini-vacation/lotus.png'"+
        " UNION SELECT '2', '3', 'Taj Mahal Tour By Train (Same Day Return)', '1', '1', 'img/mini-vacations/taj-train.jpg'"+
        " UNION SELECT '3', '3', 'Taj Mahal Trip By Car (Same Day Return)', '1', '1', 'img/mini-vacations/'"+
        " UNION SELECT '4', '3', 'Taj Mahal Trip', '1', '2', 'img/mini-vacations/noimg.png'"+
        " UNION SELECT '5', '3', 'Pink City Tour (Same Day Return)', '1', '1', 'img/mini-vacations/noimg.png'");

Проблемы:

1. Подходит ли приведенный выше запрос для вставки нескольких записей?

2. Является ли класс адаптера базы данных всегда необходимым для взаимодействия с базой данных или просто напишите метод в MainActivity для выполнения этого запроса на вставку и вызова метода в методе oncreate MainActivity, который будет работать нормально?

3. Я не смог понять реализацию массива ContentValues[] и функции bulkinsert(), которая также была объяснена на основе массива ContentValues. Где и как их использовать?

4. Каков наилучший способ проверить, успешно ли подключена база данных и проект, и мы можем успешно получить данные?

Если кто-то может просветить концепции, я был бы очень благодарен.


person divyang7    schedule 27.07.2013    source источник


Ответы (1)


вы просто пытаетесь вставить несколько записей из памяти?

попробуйте что-то вроде этого (для одного элемента):

SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put("Tour_ID", 1);
values.put("Tour_Type", 3);
values.put("Tour_Name", "Delhi Tour");
values.put("Nights", 1);
values.put("Days", 2);  
final Bitmap pic=BitmapFactory.decodeStream(getContentResolver().openInputStream(img/mini-vacation/lotus.png));
values.put("Pic", pic);    

db.insert(tourEntry.TABLE, null, values);
db.close(); 

db.insert вернет логическое значение, сообщающее вам, была ли вставка успешной.

Если вы хотите вставить сразу несколько записей, используйте транзакцию. См. раздел Транзакция базы данных Android.

person Alex    schedule 27.07.2013