在sqlite数据库中插入多个记录的有效方法

时间:2013-07-27 18:28:47

标签: android sqlite android-sqlite bulkinsert sqliteopenhelper

我需要填充我的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中编写一个方法来执行此插入查询并在MainActivity的oncreate方法中调用该方法会正常工作吗?

3.我无法理解ContentValues []数组和bulkinsert()函数的实现,该函数也是基于ContentValues数组解释的。在哪里以及如何使用它们?

4.测试数据库和项目的连接是否成功以及我们是否可以成功检索数据的最佳方法是什么?

如果有人可以启发这些概念,我会非常感激。

1 个答案:

答案 0 :(得分:3)

你正试图从内存中插入多条记录吗?

尝试这样的事情(对于单个项目):

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 Database Transaction