首页 理论教育 数据库创建和升级:完整指南

数据库创建和升级:完整指南

时间:2023-06-27 理论教育 版权反馈
【摘要】:图6-13 布局文件运行项目,单击CREATE DATABASE按钮,在Android Device Monitor窗口中,可以看到新建的数据库文件“News.db”,创建的数据库位于:/data/data/包名/databases/目录中,如图6-14所示。图6-14 新建的数据库文件“News.db”创建表只是数据库操作中最基本的一步,最初创建的表结构,随着需求的变更,到了后期是极有可能需要修改的。在Android中可以使用ADB和SQLlite3查看建立和修改的表。SQLite的sqlite3命令被用来管理SQLite数据库。

数据库创建和升级:完整指南

LitePal采取的是对象关系映射(ORM)的模式,什么是对象关系映射呢?简单来说,我们使用的编程语言是面向对象语言,而使用的数据库则是关系型数据库,将面向对象的语言和面向关系的数据库之间建立一种映射关系,这就是对象关系映射。

接下来我们看一看LitePal中如何建表。根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),也就是说,如果我们想要建一张News表,就应该有一个对应的News模型类。在源代码目录新建一个News类,如下所示。

978-7-111-58810-8-Chapter06-56.jpg

这是一个典型的Java Bean,定义了5个字段:id、title、content、publishDate、comment-Count,并生成相应的getter和setter方法,其中id这个字段可写可不写,因为即使不写这个字段,LitePal也会在表中自动生成一个id列。这个News对应数据库的一张表。

LitePal的映射规则是非常轻量级的,不像一些其他的数据库框架,需要为每个模型类单独配置一个映射关系的XML,LitePal的所有映射都是自动完成的。根据LitePal支持的数据类型,可以进行对象关系映射的数据类型一共有8种:int、short、long、float、double、bool-ean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,不需要进行任何额外的配置。

现在模型类已经建好了,还差最后一步,就是将它配置到映射列表当中。编辑assets目录下的litepal.xml文件,在<list>标签中加入News模型类的声明。

978-7-111-58810-8-Chapter06-57.jpg

注意,这里一定要填入News类的完整类名,包括路径。

这样,所有的工作都已完成,现在只要对数据库进行任何操作,就会自动创建News表。

LitePal提供了一个来获取到SQLiteDatabase实例的便捷方法,如下所示。

SQLiteDatabase db=Connector.getDatabase();

调用上述代码,News表即创建成功。

修改布局文件,添加一个按钮,如图6-13所示。

修改MainActivity中的代码,如下所示。

978-7-111-58810-8-Chapter06-58.jpg

图6-13 布局文件

978-7-111-58810-8-Chapter06-59.jpg

978-7-111-58810-8-Chapter06-60.jpg

运行项目,单击CREATE DATABASE按钮,在Android Device Monitor窗口中,可以看到新建的数据库文件“News.db”,创建的数据库位于:/data/data/包名/databases/目录中,如图6-14所示。

978-7-111-58810-8-Chapter06-61.jpg(www.xing528.com)

图6-14 新建的数据库文件“News.db”

创建表只是数据库操作中最基本的一步,最初创建的表结构,随着需求的变更,到了后期是极有可能需要修改的。因此,升级表的操作对于任何一个项目都是至关重要的。

如果数据库表的字段的数量发生了变化,使用SQLiteHelper升级数据库时会调用onUpgrade()方法,比较简单的方法是将数据库中现有的所有表都删除,然后重新创建。但是,如果News表中本来已经有数据,使用这种方式升级的话,会导致表中的数据全部丢失,所以这并不是一种值得推荐的升级方法。

下面一起来学习使用LitePal进行升级表操作的方法。

现在需要创建一张Comment表。第一步该怎么办呢?相信您已经猜到了,当然是先创建一个Comment类,在源代码目录新建一个Comment类,如下所示。

978-7-111-58810-8-Chapter06-62.jpg

Comment类中有id和content这两个字段,也就意味着Comment表中会有id和content这两列。

在assets目录下litepal.xml文件的<list>标签中加入Comment模型类的声明,并将版本号加1。

978-7-111-58810-8-Chapter06-63.jpg

现在再运行项目,单击CREATE DATABASE按钮,即会创建另一张表Comment。

现在如果需要在Comment表中添加一个publishdate列,该怎么办呢?不用怀疑,相信您已经猜到应该在Comment类中添加字段,如下所示。

978-7-111-58810-8-Chapter06-64.jpg

剩下的操作就非常简单了,只需要在litepal.xml中对版本号加1即可,如下所示。

978-7-111-58810-8-Chapter06-65.jpg

这样,下一次操作数据库调用Connector.getDatabase()方法时,publishDate列会自动添加到Comment表中。

在Android中可以使用ADB和SQLlite3查看建立和修改的表。ADB的全称为Android Debug Bridge,就是起到调试桥的作用,该工具可以帮助管理设备或模拟器的状态。SQLite的sqlite3命令被用来管理SQLite数据库。这两个文件在AndroidSDK的platform-tools文件夹下,如图6-15所示。

978-7-111-58810-8-Chapter06-66.jpg

图6-15 Android的ADB和SQLlite3

如果使用模拟器,则要在Windows的环境变量path中增加上述路径。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈