博客
关于我
Android数据库
阅读量:363 次
发布时间:2019-03-05

本文共 3226 字,大约阅读时间需要 10 分钟。

Android数据库简介

Android系统的框架层集成了Sqlite3数据库,Sqlite3是一种轻量级、高效存储的数据库。Sqlite数据库具有以下优点:
(1)零配置,无需安装和配置;
(2)储存在单一磁盘文件中的一个完整的数据库;
(3)数据库文件可以在不同字节顺序的机器间自由共享;
(4)支持数据大小至2TB;
(5)足够小,全部源代码大致3万行C代码,250KB;
(6)比目前流行的大多数数据库的操作要快;
(7)开源。

Sqlite 基本操作语句和重要概念

(1)创建数据库
创建数据库实际上并非通过SQL语句来创建,创建数据库可以通过sqlite3新数据库名来创建,比如创建一个名为school.db的数据库,在命令行下输入“sqlite3 school.db;”即可。

(2)创建表

创建表的SQL语法为:
create table 表名(字段1 数据约束类型,…,字段n 数据约束类型);
注意:每一条SQL语句都以分号结尾。
Sqlite数据库支持的数据库类型大致分为5种,分别是:
NUll 数据值为空
INTEGER 整型
REAL 浮点型数据
TEXT 字符类型,使用数据库编码(UTF-8等)存放
BLOB 只是一个数据块,完全按照输入存放

注意:SQLite3数据库中任何列,除了整型主键列,可以用于存储任何一个存储列的值,SQLite没有单独的布尔存储类型,你可以使用INTEGER的0和1表示true和false,另外,SQLite也没有代表时间和日期的数据类型,可以转化为TEXT或者INTEGER来存储。

常用的数据库约束包括以下几种:

PRIMARY KEY 主键
NOT NULL 非空
UNIQUE 唯一
FOREIGN KEY 外键
CHECK 条件检查
DEFAULT 字段的默认值

(3)插入数据

SQL语句插入数据的关键字为insert,完整的格式如下:
insert into 表名(字段1,字段2,…)值(值1,值2,…);

例如在classes表中插入一条数据,这里我只插入了一条数据中的2个字段,写法如下:

insert into classes(id,name)values(1,‘学生A’);

注意:插入的这些数据在表中一定要有对应的字段,不然就会报错!

insert语句支持批量插入数据,比如我要把students表中的数据都导入表stu中,SQL语句为:

insert into stu select * from students;

(4)查询语句

Select语句的通用格式如下:
columns是要查询的字段,tables表示从哪张表里面查询,where是查询过滤的条件,group by是指按照某个字段分组查询,order by是排序,limit是限制数量语句,下面我会一一解释每个语句需要注意的地方。

1.字段与表的别名

多表查询时查询条件相对复杂,表之间可能会产生相同的字段,这个时候字段前面可以加上表名以区分,别名就是我们可以将classes的表名设置为cls,将classes表中的major字段显示为cmj字段以简化SQL语句。

2.where条件过滤

where语句中常用的逻辑操作符有and、or、not,分别代表与、或、非。

注意:where中有一个较为重要的关系操作符叫做like。它是模糊匹配。例如要找到students表中以t开头的所有学生,那么对应的SQL为:

select * from students where name like “t%”;

3.Group by 分组

聚合中有一个重要的功能就是分组。分组就是将得到的结果集按照一定的规则划分为多个组。

4.排序

select结果集的排序使用的是order by字句,排序有升序和降序两种,分别对应asc和desc,order by后面紧跟一个或者多个字段,多个字段间用逗号隔开。

5.数量限定

数量限定需要使用limit语句,数量限定的标准格式如下:
limit 返回的数量 offset 偏移量

例如我们希望从students中索引为3的记录开始索引并且只返回一条语句,SQL如下:

select * from students limit 1 offset 2;

6.distinct去重

distinct用于去除select语句中重复的行,它紧跟在select之后。

(5)update 语句

update语句用于更新表中的数据,它的格式为:
update table set update_list where predicate;
1.update_list是要修改的字段以及值,其实就是一个字段赋值语句,形式为:字段名 = 字段值,每个字段赋值语句通过逗号分隔开。

(6)delete语句

delete语句的格式如下:
delete from table where predicate;

(7)修改表

我们知道,随着项目的演化,最初建立的表可能会面临修改的情况。修改表的SQL语句命令为alter。SQLite中的alter命令并没有实现标准SQL中的所有功能,它只有修改表名和添加字段两个功能删除字段等功能只能通过重新创建表来实现

alter的语法格式为:

alter table tableName {rename to newName | add column 新的字段};

(8)drop 命令

drop命令用于删除物理存储介质。例如删除表、视图、索引、触发器等。drop的语法格式为:
drop {table | view |index |trigger} name;

(9)数据库事务的介绍

事务是一个数据库操作的执行单元。它定义了一条或多条SQL语句,这些语句要么被全部执行,要么全部不执行,它保证了SQL语句的原子性。事务有begin、commit、rollback三个命令,begin表示开始一个事务,commit表示整个事务操作成功,rollback表示回滚到begin之前。格式为:
begin;
//SQL语句
[commit | rollback];

注意:事务提供了一种保证多条SQL语句能够被执行或者不执行的方式,很大程度上保证了数据库操作的安全性。而在Android中使用事务,也会提升SQL的执行效率。

(10)Android中封装的数据库帮助接口

我们知道Android的SQLite数据库是由C和C++实现,因此Android在FrameWork层封装了一层Java接口,使得开发人员能够更方便的操作数据库。主要的类型为SQLiteOpenHelper、SQLiteDatabase以及Cusor,不管如何封装,本质上都是通过构建SQL语句并且提交到SQLite中执行。

一般来说,在Android中创建数据库只需要以下几步:

(1)创建一个Java类继承SQLiteOpenHelper
(2)实现SQLiteOpenHelper的onCreate和onUpdate方法以及构造方法。
(3)通过构造方法创建数据库,需要传入数据库的名称,Context和数据库的版本号。
(4)在onCreate中完成创建表和字段的操作,onUpdate中完成升级操作。
(5)通过帮助类的openOrCreateDatabase()方法或者getReadableDatabase()或者getWriteableDatabase()获取到数据库完成数据的操作。

数据库的操作类,完成了对数据库表中数据的插入和查询

数据库的帮助类,完成了创建数据库,创建表

数据库的操作类,完成了对数据库表中数据的插入和查询

数据库的帮助类,完成了创建数据库,创建表

数据库的操作类,完成了对数据库表中数据的插入和查询

数据库的帮助类,完成了创建数据库,创建表

转载地址:http://twzwz.baihongyu.com/

你可能感兴趣的文章
OpenAI Gym简介及初级实例
查看>>
int 转 CString
查看>>
Edit编辑框自动换行与长度
查看>>
Java面向对象
查看>>
JAVA带标签的break和continue
查看>>
Java获取线程基本信息的方法
查看>>
vue源码分析(MVVM篇)
查看>>
设计模式之组合模式
查看>>
(Python学习笔记):字典
查看>>
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
查看>>
leetcode 14 最长公共前缀
查看>>
做做Java
查看>>
C++并发与多线程(一)
查看>>
计算机网络子网划分错题集
查看>>
java一些基本程序
查看>>
vue-依赖-点击复制
查看>>
LeetCode 116填充每个节点的下一个右侧结点指针
查看>>
2021-4-28【PTA】【L2-1 包装机 (25 分)】
查看>>
Arduino mega2560+MPU6050利用加速度值控制舵机
查看>>
紫书——蛇形填数
查看>>