1

我需要填充我的 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.测试数据库和项目的连接是否成功并且我们可以成功检索数据的最佳方法是什么?

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

4

1 回答 1

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 数据库事务

于 2013-07-27T19:23:34.240 回答