当前位置: 首页 > news >正文

Android sqlite分页上传离线订单后删除

1、判断订单表的的总数是否大于0,如果大于0开始上传订单

 public int getOrderCount() {String query = "SELECT COUNT(*) FROM " + TABLE_NAME;Cursor cursor = db.rawQuery(query, null);int count = 0;if (cursor.moveToFirst()) {count = cursor.getInt(0);}cursor.close();return count;}

2、每一页20条数据的查询

public List<DBOrder> query(String condition) {String sql = String.format("SELECT * FROM %s WHERE %s LIMIT %d;", TABLE_NAME, condition,20);List<DBOrder> infoList = new ArrayList<>();// 执行记录查询动作,该语句返回结果集的游标//参数一:SQL查询//参数二:selectionArgs//您可以在查询的 where 子句中包含 ?s,它将被 selectionArgs 中的值替换。这些值将绑定为字符串。Cursor cursor = db.rawQuery(sql, null);
//        Logger.json(JSON.toJSONString(cursor));// 循环取出游标指向的每条记录while (cursor.moveToNext()) {DBOrder dbOrder = new DBOrder();dbOrder.sn = cursor.getString(cursor.getColumnIndex("sn"));dbOrder.card_no = cursor.getString(cursor.getColumnIndex("card_no"));dbOrder.total_amount = cursor.getString(cursor.getColumnIndex("total_amount"));dbOrder.rowid = cursor.getLong(cursor.getColumnIndex("id"));dbOrder.update_time = cursor.getString(cursor.getColumnIndex("update_time"));dbOrder.is_metering = cursor.getString(cursor.getColumnIndex("is_metering"));dbOrder.terminal_params = cursor.getString(cursor.getColumnIndex("terminal_params"));dbOrder.ftoken = cursor.getString(cursor.getColumnIndex("ftoken"));dbOrder.uid = cursor.getString(cursor.getColumnIndex("uid"));dbOrder.is_off = cursor.getString(cursor.getColumnIndex("is_off"));dbOrder.pay_type = cursor.getString(cursor.getColumnIndex("pay_type"));infoList.add(dbOrder);}//查询完毕,关闭数据库游标cursor.close();return infoList;}

3、获取infoList后传给后台,如果code返回200,收集ids删除掉传入的数据,在循环到第一步,直到彻底上传完为止

 List<Long> ids = new ArrayList<>();for (DBOrder dbOrder : dbOrders){ids.add(dbOrder.rowid);}
public void delOrder(List<Long> ids) {if (ids == null || ids.isEmpty()) {return;}StringBuilder idList = new StringBuilder();for (Long id : ids) {if (idList.length() > 0) {idList.append(",");}idList.append(id);}Logger.d("删除:" + ids);// 构建删除条件,将传入的ID列表拼接成适当的条件String condition = "id IN (" + idList.toString() + ")";// 执行删除操作db.delete(TABLE_NAME, condition, null);}

分页加载数据: 如果数据库中的数据量很大,不要一次性加载所有数据到 List<DBOrder> 中。而是分页加载,每次加载一小部分数据。这可以减轻内存负担。

http://www.lryc.cn/news/213409.html

相关文章:

  • Flask基本教程以及Jinjia2模板引擎简介
  • Django实战项目-学习任务系统-兑换物品管理
  • jmeter和postman你选哪个做接口测试?
  • mac版本 Adobe总是弹窗提示验证问题如何解决
  • 钡铼技术ARM工控机在机器人控制领域的应用
  • HTML+CSS+JS实现计算器
  • Git工作原理和常见问题处理方案
  • C++-实现一个简单的菜单程序
  • Git更新 fork 的仓库
  • chorme安装esay scholar及chrome 无法从该网站添加应用、扩展程序和用户脚本解决方案
  • 数据库-扩展语句,约束方式
  • 精密数据工匠:探索 Netty ChannelHandler 的奥秘
  • Python四种基本结构的操作
  • Eureka:com.netflix.discovery.TimedSupervisorTask - task supervisor timed out
  • 1.spark standalone环境安装
  • 【问题解决】 avue dicUrl 动态参数加载字典数据(已解决)
  • ​学习一下,什么是预包装食品?​
  • 从零开始学习搭建量化平台笔记
  • 【whisper】在python中调用whisper提取字幕或翻译字幕到文本
  • git diff对比差异时指定或排除特定的文件和目录
  • 数据结构介绍与时间、空间复杂度
  • (c语言进阶)字符串函数、字符分类函数和字符转换函数
  • 解决MySQL大版本升级导致.Net(C#)程序连接报错问题
  • Java 将对象List转为csv文件并上传远程文件服务器实现方案
  • 分享8个分布式Kafka的使用场景
  • 【再见了暗恋对象 朋友们看完之后的一些感悟】
  • JSON和Protobuf序列化
  • lambda表达式 - c++11
  • 509. 斐波那契数
  • 四、[mysql]索引优化-1