SQLite数据库---sql语句的基础使用

拥有回忆 提交于 2020-01-31 14:26:19

1.什么是SQLite数据库
SQLite数据库是一种轻量级的、嵌入式的、ACID数据库;
**轻量级:**没有MySql、Oracle、SQL Server那么大,那么重量级
**嵌入式:**在手机内部的,可以导出
**ACID:**原子性(事务的处理要么一起执行,要么不执行)、一致性(事务使数据库的数据从一个状态到另一个状态)、隔离性(事务并发带来的问题,像脏读、不可重复读、幻读,通过隔离级别来避免,至少要避免脏读)、持久性(当事务提交之后,对数据库中的数据改变是永久性的)

2.SQLite数据库的优缺点
优点:
(1)上边说到过的轻量级数据库就是优点之一,还有就是无需配置,高效;
(2)动态数据类型:比如说在使用MySql数据库时,在创建表时,要确定每个字段的类型,int、varchar、date等等,在插入该表时,插入的数据要符合创建表时字段的类型;但是SQLite数据库不一样,如果第一次插入int类型数据,第二次插入String类型数据也是可以的。
缺点:
(1)因为是单一文件,所以并发性能要差一些;因此在使用SQLite时,所有的表、索引等都是在同一个文件中,在并发查询多张表时效率就很低;
(2)网络文件的存储。

3.SQLite数据库的用途
(1)APP运行时数据的保存
(2)离线功能:在没有网络的情况下,可以查看历史记录,将历史数据保存在SQLite数据库;
(3)数据处理:做数据整合,商城购物APP的购物车等;

4.SQLiteOpenHelper
在Android中,提供了一个类SQLiteOpenHelper,用于数据库的创建;SQLiteOpenHelper是一个抽象类,一般是创建一个类继承自SQLiteOpenHelper,创建构造方法,重写onCreate()方法和onUpgrade()方法。
在这里插入图片描述
构造方法:在构造方法中创建数据库,声明其版本
在这里插入图片描述
onCreate():在onCreate()方法中创建数据表;创建数据表之前,创建一个数据表的类,方便后续修改。
在这里插入图片描述
在onCreate()方法中执行sql语句创建数据表;
在这里插入图片描述
至于数据库什么时候创建,我们可以在Application中设置初始化,也就是说在APP启动之后,就创建数据库。
(1)创建一个数据类,在Application中注册
在这里插入图片描述
当APP启动时,会初始化Application,在调用onCreate方法时,会初始化数据类,执行init方法;
在这里插入图片描述
在init方法中,会初始化StudentDBDao类;
在这里插入图片描述
其实就是完成了数据库的初始化

5.数据库的增删改查
简单的来操作一个CRUD操作,得到数据库的连接对象,通过getReadableDataBase或者getWriteableDataBase得到SQLiteDatabase对象,就可以进行CRUD操作。

当我们调用这两个方法时,其实这两个方法是没有区别的,并不是一个只读一个只写,都可以得到数据库对象,这个时候,就会调用onCreate()、onUpgrade()方法,来建表
在这里插入图片描述
当执行完插入操作后,从手机中导出“school”数据库,放入SQLite Expert工具中查看具体的数据内容。
在这里插入图片描述
查看数据库中的数据,和我们在之前从创建数据库、创建数据表、插入数据完全一致。
在这里插入图片描述
但是我们在常见数据表时,自己设置了一个id,我们没有给它赋值,但是在查看数据库的时候,看到还有一个“rowid”字段,那我们根据id查询数据时,能查到数据吗?
在这里插入图片描述
只能根据rowid才能获取数据,所以在创建表时不需要设置id字段,有默认的rowid。
在这里插入图片描述
除此之外,还可以使用database.execSQL的方式去执行Sql语句,更方便使用。

除了增删改之外,还有查找操作,接下来做一个小案例,通过查找数据库中的姓名和年龄,生成一张列表展示。
在这里插入图片描述
通过往表中添加数据,目前表中的数据存在这些
在这里插入图片描述
通过游标Cursor查询数据库中的数据,将对象保存在List集合中,然后作为ListView的数据源,将数据显示在ListView列表中。
ListView的适配器中的部分核心代码
实例展示:
在这里插入图片描述
目前关于数据库DML简单操作就先介绍到这里,后续还有文章会继续讲解。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!