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

这篇具有很好参考价值的文章主要介绍了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> 中。而是分页加载,每次加载一小部分数据。这可以减轻内存负担。文章来源地址https://www.toymoban.com/news/detail-737658.html

到了这里,关于Android sqlite分页上传离线订单后删除的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Android Studio]Android 数据存储--SQLite数据库存储

     🟧🟨🟩🟦🟪 Android Debug 🟧🟨🟩🟦🟪 Topic   发布安卓学习过程中遇到问题解决过程,希望我的解决方案可以对小伙伴们有帮助。 💯实战演练--基于SQLite数据库的通讯录实现数据的增删改查 1,创建程序 2,放置界面控件 3,编写界面交互代码 4, 核心方法讲解 5,数据库

    2024年02月08日
    浏览(47)
  • Android studio 中使用sqlite

    当在 Android Studio 中使用 SQLite 数据库时,可以遵循以下详细步骤: android studio官网下载 这将添加 SQLite AndroidX 库的依赖项。 在上述代码中,我们创建了一个名为  DatabaseHelper  的类,它继承自  SQLiteOpenHelper 。在构造函数中,我们指定了数据库的名称和版本号。在  onCreate()

    2024年02月07日
    浏览(42)
  • Android 使用SQLite的案例详解

    sqlite是个轻量级的数据库,可用于嵌入式。有时候做本地的web开发的时候,我会把sqlite作为内置数据库,这样便于部署,直接启动应用即可。 这里主要是将android中的使用过程记录一下。主要包含,数据如何初始化,在不同的activity中如何使用,以及增删改查的实现。 继承S

    2024年02月13日
    浏览(35)
  • Android 进阶 1、sqlite数据库

    在我们学会了Android的基本使用之后就需要往高处发展了,毕竟水往高处流,很多时候我们学习一门技术感觉没有收获都是因为还没到那个层次,当你一步步往上走的时候就会渐渐发现自己收获的越来越多,进步也就会越来越快了,废话不多说,回到正题; 1、认识数据库 安卓

    2024年02月10日
    浏览(44)
  • Android之SQLite数据库使用

    SQLite是Android系统集成的一个轻量级的数据库。 Android提供了 SQLiteDatabase代表一个数据库 (底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来可通过SQLiteDatabase对象来管理、操作数据库了。 Android为了让我们能够更加方便地管理数据库,

    2024年02月16日
    浏览(45)
  • Android开发——SQLite数据库的使用

    1、SQLite的特性 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。

    2024年02月15日
    浏览(44)
  • Android中SQLite数据库查询详解

    SQLite在线教程网址https://www.yiibai.com/sqlite table :表名。相当于select *** from table语句中的table 。如果是多表联合查询,可以用逗号将两个表名分开。 columns :要查询出来的列名(字段),全部查询就写null。相当于 select *** from table语句中的 ***部分 。如果是查询多个参数,可以用

    2024年01月16日
    浏览(51)
  • Android Studio使用SQLite数据库

    1.能使用SQLiteDatabase类操作数据库与表 2.能使用SQLiteDatabaseHelper类操作数据库与表 无论是安卓应用还是苹果应用,都提供了本地轻量级数据库——SQLite,可以创建和删除数据库,还能对数据表进行增删改查操作。 SQLite由SQL编译器、内核、后端以及附件几个部分构成。SQLite通过

    2024年02月01日
    浏览(44)
  • Android SQLite中的UNIQUE constraint failed错误

    报错信息: UNIQUE constraint failed SQLite中的 UNIQUE constraint failed 错误,表明尝试插入或更新数据库时出现了 违反唯一性约束的情况 。唯一性约束确保在特定列或列集合中的值在表中是唯一的,即不能有重复的值。当你尝试插入或更新已存在于具有唯一性约束的列的值时,就会触

    2024年04月29日
    浏览(30)
  • Android Studio中SQLite的使用,主要介绍sqlite插入和读出图片(ViewBinder)的操作方法

    本人最近在写一个小的安卓项目,开发app过程中用到了安卓自带的sqlite。本文主要对sqlite图片操作进行介绍,其他存入文本之类的操作和普通数据库一样,众所周知,sqlite是一款轻型的数据库,以下先简单介绍一下sqlite,为后续做铺垫,有了解的大佬可以跳过此部分:   SQ

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包