返回顶部
首页 > 资讯 > 移动开发 >深入Android SQLite 事务处理详解
  • 950
分享到

深入Android SQLite 事务处理详解

事务处理事务SQLiteAndroid 2022-06-06 10:06:44 950人浏览 八月长安
摘要

应用程序初始化时需要批量的向sqlite中插入大量数据,单独的使用for+Insert方法导致应用响应缓慢,因为 sqlite插入数据的时候默认一条语句就是一个事务,有多少条数

应用程序初始化时需要批量的向sqlite中插入大量数据,单独的使用for+Insert方法导致应用响应缓慢,因为 sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作。我的应用初始5000条记录也就是要5000次读写磁盘操作。

而且不能保证所有数据都能同时插入。(有可能部分插入成功,另外一部分失败,后续还得删除。太麻烦)

解决方法:

添加事务处理,把5000条插入作为一个事务


我们使用SQLite的事务进行控制:
代码如下:
        db.beginTransaction();  //手动设置开始事务

        try{

            //批量处理操作

            for(Collection c:colls){

                insert(db, c);

            }

            db.setTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚不提交。

//在setTransactionSuccessful和endTransaction之间不进行任何数据库操作

           }catch(Exception e){

               MyLog.printStackTraceString(e);

           }finally{

               db.endTransaction(); //处理完成

           }


一、使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功,则所有从beginTransaction()开始的操作都会被提交,如果没有调用setTransactionSuccessful() 方法则回滚事务。

二、使用例子如下:下面两条SQL语句在同一个事务中执行。

Java代码
代码如下:
//银行账户事务测试 
public void payment() 

    SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); 
    //开启事务 
    db.beginTransaction(); 
    try 
    { 
        db.execSQL("update person set amount=amount-10 where personid=?", new Object[]{1}); 
        db.execSQL("update person set amount=amount+10 where personid=?", new Object[]{2}); 
        //设置事务标志为成功,当结束事务时就会提交事务 
        db.setTransactionSuccessful(); 
    } 
   catch(Exception e){
        throw(e);
    }
    finally 
    { 
        //结束事务 
        db.endTransaction(); 
    } 
}

您可能感兴趣的文章:Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)Android SQLite数据库增删改查操作的使用详解Android开发之SQLite的使用方法Android使用SQLite数据库的简单实例android创建数据库(SQLite)保存图片示例android中sqlite的按条件查找的小例子Android--SQLite(增,删,改,查)操作实例代码Android创建和使用数据库SQLIteAndroid SQLite数据库进行查询优化的方法


--结束END--

本文标题: 深入Android SQLite 事务处理详解

本文链接: https://lsjlt.com/news/27815.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 深入Android SQLite 事务处理详解
    应用程序初始化时需要批量的向sqlite中插入大量数据,单独的使用for+Insert方法导致应用响应缓慢,因为 sqlite插入数据的时候默认一条语句就是一个事务,有多少条数...
    99+
    2022-06-06
    事务处理 事务 SQLite Android
  • Python:深入理解Redis事务
    1.从数据库事务说起通常我们提及数据库都不可避免的要提到事务,那么什么是事务呢事务是指作为单个逻辑工作单元执行的一系列操作。所以,首先事务是一系列操作,这一系列操作具有二态性,即完全地执行或者完全地不执行。因此事务处理可以确保除非事务单元内...
    99+
    2023-06-01
  • 深入理解Android消息处理系统
      熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。...
    99+
    2022-06-06
    系统 Android
  • Qt 事件处理机制的深入理解
    目录1.Qt中事件的来源,谁接收处理。2.事件处理顺序3.事件过滤器4.event方法5.鼠标进入事件6.accept(),ignore()1.Qt中事件的来源,谁接收处理。 Qt中...
    99+
    2024-04-02
  • 如何深入理解Redis事务
    本篇内容主要讲解“如何深入理解Redis事务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何深入理解Redis事务”吧!Redis可以看成NoSQL类型的数据...
    99+
    2024-04-02
  • SQLite是否支持事务处理
    是的,SQLite支持事务处理。SQLite使用事务来确保数据的一致性和完整性。事务可以帮助在多个操作之间保持数据的一致性,并且可以...
    99+
    2024-04-09
    SQLite
  • android ListView深入理解
      在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。抽空把对ListView的使用做了整理,并写了个小例子...
    99+
    2022-06-06
    listview Android
  • 深入Understanding Android ContentProvider详解
    1. 什么是ContentProvider也即内容提供者,是对所有数据访问的一层抽象,为数据访问提供了统一的接口。它有以下优点:a. 对数据的抽象,为所有的组件提供统一的访问数...
    99+
    2022-06-06
    Android
  • Android 深入探究自定义view之事件的分发机制与处理详解
    目录题引Activity对事件的分发过程父布局拦截的分发处理过程ACTION_DOWN 事件ACTION_MOVE 事件父布局不拦截时的分发处理过程ACTION_DOWNACTION...
    99+
    2024-04-02
  • 深入Android Browser配置管理的详解
    Settings是WebView提供给上层App的一个配置Webview的接口,每个WebView都有一个WebSettings,要控制WebView的行为,只能通过WebVi...
    99+
    2022-06-06
    Android
  • 深入理解Android Matrix理论与使用的详解
    以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,前段时间在使用GDI+的时候再次学习如何使用矩阵来变化图像,看了之后在这里总结说明。首先大家看看下面这个3 x 3的矩阵...
    99+
    2022-06-06
    matrix Android
  • JavaScript事件流:深入理解事件处理和传播机制
    引言 JavaScript中的事件流是一种机制,用于描述和处理事件在DOM树中的传播过程。了解事件流的属性和工作原理对于编写高效的事件处理代码和实现复杂的交互功能至关重要。本文将详细介绍JavaSc...
    99+
    2023-09-14
    javascript 开发语言 ecmascript 原力计划
  • SpringBoot错误处理流程深入详解
    目录一、错误处理二、底层相关组件三、异常处理流程四、定制错误处理逻辑1、自定义错误页面2、使用注解或者默认的异常处理3、自定义异常处理解析器一、错误处理 默认情况下,Spring B...
    99+
    2024-04-02
  • Node.js Serverless 中的事件处理:深入了解 EventEmitter
    Node.js Serverless 中的事件处理 Node.js Serverless 架构正在快速发展,而事件处理则是其中一个关键概念。事件处理允许应用程序在特定事件发生时执行特定的代码,从而实现异步和非阻塞的通信。本文将深入探讨 ...
    99+
    2024-02-21
    Node.js Serverless EventEmitter 事件处理
  • Android Touch事件分发深入了解
    本文带着大家深入学习触摸事件的分发,具体内容如下 1. 触摸动作及事件序列 (1)触摸事件的动作     触摸动作一共有三种:ACTION_DOW...
    99+
    2022-06-06
    touch Android
  • 深入解析MySQL 事务
    目录事务的四大特性 ( ACID )脏读不可重复读幻读MySQL的隔离级别事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。 事务的四大特性 ( ACID ...
    99+
    2024-04-02
  • MySQL 事务概念与用法深入详解
    本文实例讲述了MySQL 事务概念与用法。分享给大家供大家参考,具体如下: 事务的概念 MySQL事务是一个或者多个的数据库操作,要么全部执行成功,要么全部失败回滚。 事务是通过事务日志来实现的,事务日志包括:red...
    99+
    2022-05-25
    MySQL 事务
  • 深入理解oracle的事务隔离性
    转: http://www.bkjia.com/oracle/925189.html 深入理解oracle的事务隔离性 在Oracle关系数据库中,我们先来看下面这个问题: A...
    99+
    2024-04-02
  • 深入Android开发FAQ的详解
    Android 现在很火爆,其所谓的开放性和免费开源吸引了大批的手机硬件厂商进入了Android阵营。其火爆的另一个原因是因为其平台应用开发,正如Google所说,Androi...
    99+
    2022-06-06
    Android
  • Java深入讲解AWT实现事件处理流程
    目录AWT的事件处理AWT中的事件继承图事件适配器小结AWT的事件处理 事件处理主要是为了响应用户的操作 事件对象(Event):封装了GUI组件上发生的特定事件(通常就是用户的一次...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作