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

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

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

 
public void addProductinfo(List<Productbean>list)
{
    //获取操作实例
    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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值