最近因为项目要登录之后下载大量数据 如果用一条一条插入的话 耗时真的非常严重,后来慢慢看了下事务处理 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();}