9.2.2. 四种主要操作

优质
小牛编辑
125浏览
2023-12-01

9.2.2.四种主要操作

DbHelper类提供了自己的封装来简化SQL操作。经观察人们发现,绝大多数的数据库操作不外乎只有四种,也就是添加(Create)、查询(Query)、修改(Update)、删除(Delete),简称为CRUD。为满足这些需求,DbHelper提供了以下方法:

insert()

向数据库中插入一行或者多行

query()

查询符合条件的行

update()

更新符合条件的行

delete()

删除符合条件的行

以上的每个方法都有若干变种(译者注:比如insertOrThrow),分别提供不同的功能。要调用上面的方法,我们需要创建一个ContentValues对象作为容器,将关心的数据暂存到里面。本章将以插入操作为例,讲解数据库操作的基本过程,而其它操作一般都是大同小异的。

那么,为什么不直接使用 SQL 呢?有三个主要的原因:

首先从安全角度考虑,直接使用 SQL 语句很容易导致SQL 注入攻击。 这是因为 SQL 语句中会包含用户的输入, 而用户的输入都是不可信任的,不加检查地构造 SQL 语句的话,很容易导致安全漏洞。

其次从性能的角度,重复执行SQL语句非常耗时,因为每次执行都需要对其进行解析。

最后,使用DbHelper有助于提高程序的健壮性,使得许多编程错误可以在编译时发现。若是使用 SQL,这些错误一般得到运行时才能被发现。

很遗憾,Android框架对SQL的DDL(Data Definition Language,数据定义语言)部分支持不多,缺少相应的封装。因此要创建表,我们只能通过execSQL()调用来运行CREATE TABLE之类的SQL语句。但这里不存在用户输入,也就没有安全问题;而且这些代码都很少执行,因此也不会对性能造成影响。