android sqlite事务处理sql效率大大提高

 最近因为项目要登录之后下载大量数据 如果用一条一条插入的话 耗时真的非常严重,后来慢慢看了下事务处理 1W条的大数据 只需要2秒左右的时间就可以完成了

使用下面的事务大大提高效率

 
  
public void addProductinfo(Listlist)
{
    //获取操作实例
    SQLiteDatabase db = helper.getWritableDatabase();
   // Log.e("add","yes");
    //本人通常用这种方法,推荐使用
   // String sqlstr = "insert into product(SERIAL_CODE,CONFIG_ID,PRODUCT_ID,PRODUCT_NAME,PRODUCT_CODE,WAREHOUSE_ID,QUANTITY,RETAIL_PRICE,MEMBER_PRICE,STOCK_NUMBER)values(?,?,?,?,?,?,?,?,?,?)";

    String sqlstr = "insert into product(SERIAL_CODE,CONFIG_ID,PRODUCT_ID,PRODUCT_NAME,PRODUCT_CODE,WAREHOUSE_ID,QUANTITY,RETAIL_PRICE,MEMBER_PRICE,STOCK_NUMBER)values(?,?,?,?,?,?,?,?,?,?)";
    SQLiteStatement stat = db.compileStatement(sqlstr);
//开启事务
    db.beginTransaction();
    for (Productbean productbean : list){
        stat.bindString(1,productbean.getSN_CODE());
        stat.bindString(2,productbean.getCONFIG_ID());
        stat.bindString(3,productbean.getPRODUCT_ID());
        stat.bindString(4,productbean.getPRODUCT_NAME());
        stat.bindString(5,productbean.getPRODUCT_CODE());
        stat.bindString(6,productbean.getWAREHOUSE_ID());
        stat.bindLong(7,productbean.getQUANTITY());
        stat.bindString(8, productbean.getRETAIL_PRICE());
        stat.bindLong(9,productbean.getSTOCK_NUMBER());
        stat.bindString(10,productbean.getMEMBER_PRICE());
        stat.executeInsert();
    }
  //事务标志 不设置的话 会进行回滚操作
    db.setTransactionSuccessful();
    db.endTransaction();
    db.close();
}

你可能感兴趣的:(android)