【问题标题】:Efficient way to insert multiple records in sqlite database在sqlite数据库中插入多条记录的有效方法
【发布时间】:2013-07-27 18:28:47
【问题描述】:

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

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

【问题讨论】:

    标签: android sqlite android-sqlite bulkinsert sqliteopenhelper


    【解决方案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 Database Transaction

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多