数据库是按照数据结构来组织、存储和管理数据的仓库,而在信息话的社会,数据库又不单单仅限与数据的相关内容,现在数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,而SQL是结构化查询语言,是专为数据库而建立的操作命令集,SQLitr数据库是已过期嵌入式且实现零配置、无服务端和失误功能的SQL数据引擎,安全性比较好。那么现在我们来谈谈Android系统中的SQLite数据库。

一、关系型数据库SQLIte

每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库—SQLite。SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了。SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的。

SQLite体系结构图如下:

编译器包括Tokenizer(词法分析器)、 Parser(语法分析器)、Code Generator(代码产生器)。他们协同处理文本形式的结构化查询语句。

后端由B-tree,Pager,OS Interface组成。B-tree的职责是负责排序,维护多个数据库页之间错综复杂的关系,将页面组织成树状结构,页面就是树的叶子。Pager负责传输,根据B-tree的请求从磁盘读取页面或者写入页面。

公共服务中有各种实用的功能比如:内存分配、字符串比较,Unicode转换等。

SQLite数据库是D.Richard Hipp用C语言编写的开源嵌入式数据库,支持的数据库大小为2TB。它具有如下特征:

1、轻量级

SQLite和C\\S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的尺寸也相当小。

2、独立性

SQLite数据库的核心引擎本身不依赖第三方软件,使用它也不需要“安装”,所以在使用的时候能够省去不少麻烦。

3、隔离性

SQLite数据库中的所有信息(比如表、视图、触发器)都包含在一个文件内,方便管理和维护。

4、跨平台

SQLite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统之外,很多手机操作系统同样可以运行,比如Android、Windows Mobile、Symbian、Palm等。

5、多语言接口

SQLite数据库支持很多语言编程接口,比如C\\C++、java、Python、dotNet、Ruby、Perl等,得到更多开发者的喜爱。

6、安全性

SQLite数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。

SQLite官方网站,了解更多内容请前往。

二、导出查看数据库文件

在android中,为某个应用程序创建的数据库,只有它可以访问,其它应用程序是不能访问的,数据库位于Android设备/data/data/package_name/databases文件夹中。

想要将数据库文件导出可以使用eclipse,如图所示:

查看数据库,使用SQlite Database Browser,如图所示:

三、扩展类

3.1扩展SQLiteOpenHelper

Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper 的子类,至少需要实现三个方法:

构造函数,调用父类 SQLiteOpenHelper 的构造函数

onCreate()方法;// TODO 创建数据库后,对数据库的操作

onUpgrage()方法。// TODO 更改数据库版本的操作

当你完成了对数据库的操作(例如你的 Activity 已经关闭),需要调用 SQLiteDatabase 的 Close() 方法来释放掉数据库连接。

操作数据库的最佳实践是创建一个辅助类,例如联系人模块

class ContactsDatabaseHelper extends SQLiteOpenHelper

3.2 Cursor类

Android使用Cursor类返回一个需要的值,Cursor作为一个指针从数据库查询返回结果集,使用Cursor允许Android更有效地管理它们需要的行和列,你使用ContentValues对象存储键/值对,它的put()方法允许你插入不同数据类型的键值。

3.3 数据类型

SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifest typing.)。

四、数据库操作

4.1创建和打开数据库

在Android中创建和打开一个数据库都可以使用openOrCreateDatabase方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,如果不存在则创建一个数据库:创建成功则返回一个SQLiteDatebase对象,否则抛出异常FileNotFoundException。

下面我们来创建一个名为Test的数据库,并返回一个SQLiteDatabase对象mSQLiteDatabase。

4.2创建表

通过execSQL方法来执行一条SQL语句。

创建表的时候总要确定一个主键,这个字段是64位整型,别名_rowid。其特点就是自增长功能。当到达最大值时,会搜索该字段未使用的值(某些记录被删除_rowid会被回收),所以要唯一严格增长的自动主键必须加入关键字autoincrement。

4.3删除表

4.4修改数据

4.4.1 插入记录

可以使用insert方法来添加数据,但是insert方法要求把数据都打包到ContentValues中,ContentValues其实就是一个Map,Key值是字段名称,Value值是字段的值。通过ContentValues的put方法就可以把数据放到ContentValues对象中,然后插入到表中去。具体实现如下:

4.4.2 更新记录

update 表名 set 列名=xxx [where条件]

4.4.3 删除记录

4.5查询

SELECT 列名 FROM 表名 WHERE 条件

例如在联系人中保存3个联系人,data表如下:

查询data1值为10086的项

对查询条件和返回值稍做修改

LIKE的使用

Like经常和 %或者 _ 搭配使用。

%可与任意0个或者多个字符匹配,_可与任意单个字符匹配。

GLOB的使用

Glob与like非常相似,常与 * 搭配。

限定和排序

关键字:order、limit、offset。

Order分为asc(默认升序),desc(降序)。

限定个数

指定偏移

内连接:通过表中两个字段进行连接,找出两个集合的交集。

select xxx from 表名1 inner join 表名2 on 表名1.列名 = 表名2.列名

左外连接:左表的所有项和内连接项。

select xxx from 表名1 left outer join 表名2 on 表名1.列名 = 表名2.列名

五、高级特性

5.1 视图

视图是虚拟表,它的内容都派生自其它表的查询结果。虽然它看起来像基本表,但是它不是,因为基本表的内容是持久的,而视图的内容是使用时动态产生的。

create view 表名 as 定义

5.2 索引

索引是一种用来在某种条件下加速查询的结构。

create index 索引名 on 表名(列名)

5.3 触发器

触发器的作用是当具体的表发生特定的数据事件时,执行对应的操作。

create trigger 触发器名 [before|after] [insert|delete|update|update of columns] on 表名 action

本文我们谈到了关系型数据库SQLite体系结构的基本知识,以及其一些特征,还介绍了数据库中的基本操作方法以及创建、查询、修改、删除等一些基本知识,还有一些高级特性。

android属于数据库管理系统,详细谈谈Android系统中的SQLite数据库的应用相关推荐

  1. android手机获取系统短信sqlite数据库并查看内容

    一个朋友过来,准备玩玩Ta的android手机,给我之前还要拿回去看看,结果是ta把短信加密了(第三方短信),怕我知道ta的啥见不得人的秘密.o(∩_∩)o 哈哈.TA威胁我说加密了,看我怎么看.结果 ...

  2. 在 Android 应用程序中使用 SQLite 数据库以及怎么用

    part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...

  3. Android中实现SQLite数据库CRUD操作的两种方式

    Android中实现SQLite数据库CRUD操作的两种方式 SQLite是一款轻量级的关系型数据库,具有运行速度.占用资源少的特点.通常只需要几百KB的内存就够了,因此特别适合在移动设备上使用.SQ ...

  4. 安卓视频开发 mysql_在Android应用中使用SQLite数据库(传智播客视频笔记)

    在Android应用中使用SQLite数据库 应用生成的数据库文件保存为/data/data/应用包名/databases/name.db,生成的文件可用SQLite Expert打开 (name是自 ...

  5. linux mysql cpu 高,Linux系统中关于Mysql数据库导致CPU很高的问题解决

    Linux系统中关于Mysql数据库导致CPU很高的问题解决 发布时间:2007-11-19 00:01:12来源:红联作者:spworks 服务器环境 Liunx AS4 + PHP5 + Mysq ...

  6. 解决linux系统中的mysql数据库,区分大小写的问题

    解决linux系统中的docker-mysql数据库,区分大小写的问题 最近研究docker比较勤,偶然发现,我项目的数据库改成服务器上的docker容器中的数据库,就会给我报错 说是没得这表,这数据 ...

  7. uwp连接mysql数据库_在 UWP 应用中使用 SQLite 数据库

    在 UWP 应用中使用 SQLite 数据库Use a SQLite database in a UWP app 06/26/2020 本文内容 可以使用 SQLite 在用户设备上的轻量级数据库中存 ...

  8. java中删除sqlite数据库语句_sqlite sql创建数据库语句

    iOS开发数据库篇-SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 **p ...

  9. Android中关于SQLite数据库的一些知识

    使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本 ...

最新文章

  1. 公司施行OKR了,绩效考核咋办?
  2. 再见XShell!这款国产终端更好用!
  3. linux 3g 程序,ARM板和Linux上的3G配置详解
  4. perl中q,qq,qw,qr的区别。
  5. ubuntu搜狗输入法突然无法使用(新解)
  6. Qt文档阅读笔记-QNetworkProxy::ProxyType解析(Qt设置Fiddler代理)
  7. dubbo 自定义过滤器
  8. 如何查找cvpr类的论文_美国凯泽大学工商管理硕士:MBA论文案例编写类如何写?...
  9. mysql 5.7日志的种类_MySQL中的六种日志类型的介绍
  10. 异构计算:PC的“动车组”
  11. 微擎 人人商城 头像获取失败问题
  12. HTML代码via浏览器logo,Via浏览器怎么定制首页 几步轻松完成
  13. 如何使用计算机处理文件,怎么处理电脑的缓存文件
  14. 《通过PMBOK看项目管理软件》交流活动
  15. 金融界神曲“金融科技”:度小满、中国平安等大神如何唱?
  16. android oreo 老机型,Android Oreo 通知新特性,这坑老夫先踩了
  17. 【数字信号处理】傅里叶变换
  18. JQuery Marquee插件(无缝滚动效果)- marquee.js
  19. macbook pro能搜索到wifi,但是连接不上
  20. Flutter Text / Text.rich

热门文章

  1. 阿卡迪亚大学计算机科学专业,阿卡迪亚大学世界排名解读
  2. 回顾使用云桌面的那些经验
  3. 灵 源 大 道 歌 · 曹 文 逸
  4. 谷俊丽:基于大数据的深度学习
  5. 记一次perl使用lwp获取结果为乱码
  6. 中南大学复试上机:1021:机器人走迷宫
  7. 基于SPH的流体仿真过程
  8. 百度、快手、商汤、旷视等重磅嘉宾确认出席AI ProCon 2019,你还剩1天早鸟票特权!...
  9. 奈奎斯特采样定理粗略推导
  10. 锤子android 7,锤子新机坚果Pro配置放出:骁龙626处理器、Android 7.1.1系统