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

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

java 复制代码
 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条数据的查询

java 复制代码
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删除掉传入的数据,在循环到第一步,直到彻底上传完为止

java 复制代码
 List<Long> ids = new ArrayList<>();
                        for (DBOrder dbOrder : dbOrders){
                            ids.add(dbOrder.rowid);
                        }
java 复制代码
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> 中。而是分页加载,每次加载一小部分数据。这可以减轻内存负担。

相关推荐
胖咕噜的稞达鸭1 小时前
自定义shell命令行解释器自制
java·开发语言
q***33374 小时前
oracle 12c查看执行过的sql及当前正在执行的sql
java·sql·oracle
Y***h1877 小时前
第二章 Spring中的Bean
java·后端·spring
8***29317 小时前
解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域
java·前端·spring
CoderYanger7 小时前
优选算法-栈:67.基本计算器Ⅱ
java·开发语言·算法·leetcode·职场和发展·1024程序员节
q***06298 小时前
Tomcat的升级
java·tomcat
多多*8 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven
青云交8 小时前
Java 大视界 -- Java 大数据在智能物流无人配送车路径规划与协同调度中的应用
java·spark·路径规划·大数据分析·智能物流·无人配送车·协同调度
d***81728 小时前
解决SpringBoot项目启动错误:找不到或无法加载主类
java·spring boot·后端
ᐇ9598 小时前
Java集合框架深度实战:构建智能教育管理与娱乐系统
java·开发语言·娱乐