阅读更多

使用数据库

SQlite数据库。

Android数据库的实现峰两个层次。在底层通过C++调用SQlite执行SQL语句,通过JNI向上暴露Java接口。

在框架层,提供Java类库,实现数据库的访问,并控制数据和连接。AndroidJava逻辑层通过数据窗口实现对数据库中数据的读取。

应用查询数据时,Android并不会一次性从数据库取出所有数据,而是构建一个数据窗口来实现动态映射部分数据行,将这些数据行从数据库读取出来并放在缓存在上层对象中,如果应用需要的数据正好在窗口的映射范围内,Java逻辑层会立刻从缓存中读取并返回;没有命中则通过JNI接口去数据库实时读取。

数据行的位置会根据范围不断调整,通过后台线程,异步预先从数据库读取,并更新缓存。

 

数据库的使用

SQliteDatabase表示数据库对象,提供2种模式实现增删改查。

最原始模式

利用SQL语句,调用SQliteDatabase.execSQlSQliteDatabase.rawquery执行。

Android提倡结构化描述数据。使用ContentValue对象。

 

支持预编译:SQliteStatement ssh= db.compileStatementSql

Ssh.execute();

 

支持数据库事物操作。Db.beginTransaction();db.endT ransaction()

 

为了帮助开发者更好的使用SQliteDatabase,提供了SQliteOpenHelper,封装了SQliteDatabase类。开发者通过SQliteOpenHelper.getReadableDataBaseSQliteOpenHelper.getWriteableDataBase获取SQliteDatabase对象。

 

并发问题

 

Android SQlite底层设计中,对文件读写进行加锁。在开发中要保证同时访问SQliteDatabase的仅有一个。

更多相关文章

  1. 一个使用FFmpeg库读取3gp视频的例子-Android中使用FFmpeg媒体库(
  2. Android开发者面试一百题
  3. android + red5 + rtmp
  4. Android消息机制之ThreadLocal浅析
  5. 我要做 Android(安卓)之 数据持久化
  6. Android(安卓)绘制原理浅析
  7. android中共享全局数据的方法
  8. Android数据存储方案ContentProvider存储数据
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. Android调用相机拍照并返回路径和调用系
  2. Android之百度推送高级篇之消息【原创】
  3. Android更新页面上的数据的常见三种方法
  4. Android(安卓)解压中文乱码(压缩包内中文
  5. Cocos2d-x Android 环境配置
  6. android JNI笔记
  7. Android Studio 3.6.1下载插件失败
  8. [Android]错误: -source 1.7 中不支持 la
  9. android 中怎样能够清除activity堆栈,也就
  10. 【Android】intent action 跳转到系统应