第 5 章 数据库开发 5.本章简介 1 在Android应用开发中经常用到的数据库有两个:一个是轻量级关系型数据库 SQLite,另一个是关系型数据库MySQL 。在Android本地经常使用和数据量不是太大 的数据一般存放在SQLite数据中,因此作为Android程序员要学会开发SQLite数据库, 其中包括SQLite特点、创建、操作、导出等。在“豹考通”本地教学版中,Spinner中的数 据使用Java类从文件中访问,不过这种方式并不常用,一般从SQLite中获取。因此,本 章带领大家创建“豹考通”SQLite数据库并导入数据,在项目中使用SQLite常用类获取 操作数据并显示在Spinner中。在Android开发中,MySQL数据库为服务器端提供数 据,一般数据量要比SQLite大得多,同样我们要学会安装MySQL数据库、如何设计数据 库、创建MySQL数据库、导入导出数据以及使用Java代码如何连接访问数据库。 5.ie 2 SQLt 5.2.1 了解SQLite SQLite是一款轻量级、跨平台的关系型数据库。既然号称关系型数据库,那它就支 持多数SQL92标准(如视图、触发器、事务等),这里不准备一一细说。它的运算速度非常 快,并且占用资源很少,通常只需要几百KB的内存就可以,因而特别适合在移动设备上 使用。AndriSQLie是D.cadHipp用C语言编写的开源嵌入 od系统内置了数据库,tRihr 式数据库引擎。它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。 SQLite由以下几个部分组成:SQL编译器、内核、后端以及附件。SQLite通过利用 虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核变得更加方便。 所有SQL语句都被编译成易读的可在SQLite虚拟机中执行的程序集。SQLite支持 NULL 、INTEGER 、REAL 、TEXT和BLOB数据类型,分别代表空值、整型值、浮点值、字 符串文本和二进制对象。SQLite不仅支持标准的SQL语法,还遵循数据库的ACID事 务,因此只要你以前使用过其他的关系型数据库,就可以很快地上手SQLite。而SQLite 又比一般的数据库要简单得多,它甚至不用设置用户名和密码就可以使用。Android正 是把这个功能极为强大的数据库嵌入系统当中,才使得本地持久化的功能有了一次质的 飞跃。SQLite系统架构如图5-1所示。 第5章数据库开发 图5- 1 SQLite系统架构 5.2.2 安装SQLite SQLite的官方下载地址为htp:sqieog/downod.tl,上面提供了多种 版本的SQLite,如图5-2所示。 //www.lt.rlahm 图5- 2 SQLite官方下载网站 这里我们选择下载名为sqlied-i64x-zp的版本,如图5-3所示。 t- lwn-643180000.i 图5- 3 下载相对应的版本号 145 软件项目开发实战———App全栈 下载完后直接解压到磁盘上,可以看到解压后有两个文件(一个是sqliedf,另一 t3.e 个是sqlite3.dl),如图5-4所示。 图5- 4 解压到磁盘 接下来需要把SQLite加入Path环境变量中(加入环境变量是为了更加方便地使用 SQLite)。右键“我的电脑”,选择“属性”选项,再选择“高级系统设置”,如图5-5所示。 图5- 5 选择“高级系统设置” 然后选择“环境变量”按钮,如图5-6所示。 146 图5- 6 选择“环境变量”按钮 第5章数据库开发 在“系统变量”框中找到Path,双击进入编辑页面,如图5-7所示。 图5- 7 编辑Path 将解压后的文件夹目录加到Path值后面(注意是文件夹目录,例如我本机的目录是 H:\sqlite-dl-win64-x64-3180000),如图5-8所示。 图5- 8 添加文件夹目录到Path 然后打开“命令提示符”界面(Win+R键),输入sqlite3,如果弹出如图5-9所示的消 息,就表示安装成功。 图5- 9 SQLite安装成功 147 软件项目开发实战———App全栈 5.3 创建SQLite数据库 shel 脚本虽然提供了很强大的功能,但是使用起来不够方便,幸运的是,SQLite有 很多开源且优秀的DBMS 。本章我们将介绍如何使用管理工具保存本地数据并建立 SQLite数据库,当你在项目中需要使用这些数据时,直接将SQLite数据库引用过来便 可。这里我们将使用一款叫作NavicatforSQLite的软件,以它为例进行讲解,官网地址 为htps:nvctcownod/aia-o-qie。这个软件是绿色免安装版, //www.aia.om/dlanvctfrslt 工具的下载和安装较简单,可以自行完成(解压直接运行即可),这里不多介绍。 5.1 创建bkt数据库 3. 首先,打开NavicatforSQLite软件,出现图5-10所示的页面。 图5-10 NavicatforSQLite主要操作界面 然后,单击左上角“连接”按钮,出现“新建连接”界面。我们在“连接名”这一栏输入 bkt,类型选择“新建SQLite3”。需要注意的是,数据库文件一定不要写错或者不写,不然 会报“新建连接出现I/Oeror105”错误。 “数据库文件”栏主要是提醒我们新建的SQLite3文件需要保存在什么地方,我们选 择桌面就行,然后单击“确定”按钮,如图5-11所示。 5.2 创建aea表 3.r 之后在软件的左上方可以看到出现了bkt新连接。我们依次双击bkt及main目录, 可看到在main目录下面出现了“表”选项,但是它目前还是空的。这里我们先创建 area表。 右击“表”,选择“新建表”选项,如图5-12所示。 在表的结构中输入“名”“类型”“长度”等属性,如图5-13所示。 148 第5章数据库开发 图5-11 新建bkt连接及数据库 图5-12 新建表 图5-13 创建area表的结构 149 软件项目开发实战———App 全栈 所示。 单击“保存”按钮,输入表名area,然后单击“确定”按钮,再在左边刷新表便可,如图5-14 5.3 插入aea表数据 3.r 建立了新表的结构及属性之后,我们在表中插入项目需要用到的数据。由于这里只 有4条记录,因此可以选择直接在表中输入,然后保存便可,如图5-15 所示。 图5-14 输入表名area 图5-15 直接输入数据 当然我们也可以使用SQL 语句向表中插入数据。单击软件上方的“查询”按钮,然后 单击“新建查询”,如图5-16 所示。 图5-16 新建查询 在查询编辑器页面输入插入数据的SQL 语句并依次执行,如图5-17 所示。 然后刷新area表,可以看到数据已插入表中,如图5-18 所示。 图5-17 运行插入数据的SQL语句图5-18 使用SQL语句插入数据 150 第5章数据库开发 5.4 创建shol表 3.c 我们使用相同的方式创建school表,右击“表”,选择“新建表”选项,如图5-19所示。 图5-19 新建schol表 所示。 然后根据数据分析得出的表结构依次建好各个属性(“名”“类型”“长度”等),如图5-20 图5-20 建立schol表结构 接着单击“保存”按钮,也可以使用快捷键Ctrl+S保存并输入表名school,再单击 “确定”按钮,如图5-21所示。 图5-21 保存schol表 5.5 导入shol表数据 3.c 因为school表中存的数据有几百条,所以用直接输入或SQL语句插入的方式会显 151 软件项目开发实战———App全栈 得很复杂,我们这里使用将Excel表中的数据导入SQLite数据库表的方法来导入数据。 先将需要用到的数据整理到Excel表中,部分记录如图5-22所示。 图5-22 Excel表中的部分学校数据 然后在软件中右击“表”下面的school,选择“导入向导”选项,如图5-23所示。 图5-23 选择“导入向导”选项 进入选择导入格式页面,选择“Excel文件”,然后单击“下一步”按钮,如图5-24所示。 进入选择数据源页面,从“导入从”这一栏中选择文件保存地址,这里选择保存在桌面 上。然后在“表”框中选择Shet1,单击“下一步”按钮,如图5-25所示。 进入为源定义一些附加选项的页面,这里一般都采用默认值,直接单击“下一步”按钮 便可,如图5-26所示。 进入选择目标表页面,这里的目标表就是SQLite数据库中的school表,因此不用更 152 第5章数据库开发 图5-24 选择Excel文件格式 图5-25 选择文件作为数据源 改,单击“下一步”按钮便可,如图5-27 所示。 进入定义栏位对应页面,“目标栏位”与“源栏位”要一一对应。因为Excel表中的列 名和数据库school表的字段名是相同的,所以好区分。当名称命名不同时一定要注意对 应正确。再单击“下一步”按钮,如图5-28 所示。 153