在Android 3.0及更高版本上,SQLiteDatabases支持WAL模式(预写日志记录):

如果未启用预写日志记录(默认值),则无法同时在数据库上进行读写操作。 在修改数据库之前,writer会隐式获取数据库上的独占锁,这会阻止读者在写入完成之前访问数据库。

相反,当启用预写日志记录时,写操作发生在单独的日志文件中,该文件允许读取同时进行。 当写入正在进行时,其他线程上的读者将在写入开始之前感知数据库的状态。 当写入完成时,其他线程上的读者将会感知数据库的新状态。

要在WAL模式下启动事务,请使用beginTransactionNonExclusive()而不是beginTransaction()。 当beginTransaction()以EXCLUSIVE模式启动事务时,beginTransactionNonExclusive()以IMMEDIATE模式启动一个事务

EXCLUSIVE模式使用独占锁( http://www.sqlite.org/lockingv3.html#excl_lock )意味着没有其他数据库连接,除了read_uncommitted连接将能够读取数据库,没有其他连接无exception将能够写入数据库直到事务完成

IMMEDIATE模式使用保留锁( http://www.sqlite.org/lockingv3.html#reserved_lock ),这意味着没有其他数据库连接可以写入数据库或执行BEGIN IMMEDIATE或BEGIN EXCLUSIVE,其他进程可以继续读取但是,从数据库中。

简单来说:为IMMEDIATE模式调用beginTransactionNonExclusive(),我们可以在另一个线程正在写入时读取(写入事务开始之前的状态,因为我们不会使用read_uncommitted连接 – > http://en.wikipedia.org/wiki/ Isolation_%28database_systems%29#Dirty_reads )。

android sqlite同时读写,SQLite同时读写相关推荐

  1. qt mysql读写_QT读写Sqlite数据库

    QT读写Sqlite数据库 //.h /**************************************************************************** ** ...

  2. Android的数据库 SQLite数据库:SQLite

    SQLite数据库:SQLite SQLite数据库是一款轻量级的数据库,它的运算速度特别快,占用资源特别少,通常指需要几百KB的内存就足够了.因而特别适合在移动设备上使用. 特点: 轻量级 不需要& ...

  3. Android存储方式之SQLite

    前言 SQLite数据库操作在Android开发中非常常用 今天我将带大家全面了解关于SQLite数据库的操作(增.删.查.改) 目录 1. SQLite数据库介绍 SQLite是Android内置的 ...

  4. android 入门 006(sqlite增删改查)

    android 入门 006(sqlite增删改查) package cn.rfvip.feb_14_2_sqlite;import android.content.Context; import a ...

  5. sqlite只能用于android系统,Android 数据库的使用 -- Sqlite

    Sqlite介绍 SQLite 是一款内置到移动设备上的轻量型的数据库,是遵守 ACID(原子性.一致性.隔离性.持久性)的关联式数据库管理系统,多用于嵌入式系统中. SQLite 数据库是无类型的, ...

  6. Android数据存储之SQLite的操作

    Android作为一个应用在移动设备上的操作系统,自然也就少不了数据的存储.然而SQLite作为一个轻型的关系型数据库,基于其轻量.跨平台.多语言接口及安全性等诸多因数考虑,因而Android较大的数 ...

  7. sqlite数据库android使用教程,Android开发教程之 SQLite数据库的使用

    在开发Android应用程序时经常需要存储数据,Android系统提供了SQLite数据库,还提供了SQLiteOpenHelper类,使我们可以很方便的操作数据库.通过一个例子来说明在Android ...

  8. Android学习--持久化(三) SQLite LitePal

    SQLite & LitePal 自己做为一个iOS开发,看到安卓这一块的时候,那中浓烈的熟悉味道更加强烈,SQLite这种轻量级的关系型数据库的使用在移动端相差不多,iOS有FMDB,And ...

  9. Android 绿豆通讯录【SQLite数据库---数据库(增删改查、展示数据)】

    前情提要:Android 数据库(SQLite) [简介.创建.使用(增删改查.事务.实战演练).数据显示控件(ListView.Adapter.实战演练-绿豆通讯录)] https://blog.c ...

  10. android:Android中用文件初始化sqlite数据库(zz)

        很多时候在应用安装初始化时,需要创建本地数据库,同时为数据库添加数据,之后再从数据库中读取数据. 这里有2个思路 1.先在本地创建一个能支持android使用的sqlite数据库文件,启动时, ...

最新文章

  1. 如何构建优质的推荐系统服务?| 技术头条
  2. PATH环境变量设置
  3. DNS Tunneling及相关实现——总之,你发起攻击都需要一个DNS server,下载一些工具作为client发起数据,server收集数据并响应...
  4. centos7 nat模式配置静态ip_Linux不进入网卡配置文件更改静态ip
  5. 《啊哈!算法》笔记_Day01
  6. 5、图书类别查询功能
  7. 利用注解 + 反射消除重复代码,妙!
  8. VTK:actors的类型用法实战
  9. 开源中国 2014 年源创会年度计划
  10. OpenGL学习(二)第一个OpenGL程序,绘制三角形
  11. CLRS2e读书笔记—Chapter10
  12. 微服务架构实战(二):使用API Gateway
  13. 中科院分区 计算机科学与技术专业就业前景,2020年中科院分区(升级版)最新数据分析...
  14. java图书销售系统_基于Java Web的图书销售管理系统
  15. python怎么导入包-python如何导入包
  16. Oracle中set feedback 、 set heading off 、 set verify off、 set termout off解释
  17. 如何制作Webp文件
  18. 2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
  19. 概率论与数理统计学习笔记——第三十五讲——依概率收敛,切比雪夫不等式
  20. 14-vue项目搭建.md

热门文章

  1. 动手实践感受下企业微信的网页授权登录、扫码授权登录
  2. Uint 和 int 的区别
  3. 海底捞“清疮”300店:千亿龙头的虚与实
  4. 退出登录如何清除token
  5. android手机 办公软件,寻最佳手机Office助手 八大安卓办公软件横评
  6. android找不到华为推送,Android 华为推送 android 10.0 获取不到token
  7. electron 解压zip_electron 打包问题 解决
  8. 远程桌面无法连接解决方法
  9. 服务器多开安卓系统,安卓云服务器能多开吗
  10. Android常用Qualifiers(限定符)