Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK

适用于Android开发人员的SQLite速成课程

Difficulty:IntermediateLength:LongLanguages:

Chinese (Simplified) (中文(简体)) translation by Zhang Xiang Liang (you can also view the original English article)

Android应用程序可以在SQLite数据库中存储应用程序数据  在本教程中,您将学习如何设计和操作SQLite数据库。

 这里我们从设计和使用一个简单的SQLite数据库来管理国际象棋联赛比分。 本教程是对SQLite数据库如何工作的简要概述。 这些知识将在未来的开发教程中用于实现数据库驱动的Android应用程序。

入门

Android应用程序可以创建和操作他们自己的私有SQLite关系数据库。 开发人员还可以使用作为称为Android调试桥(adb)的Android SDK工具的一部分提供的sqlite3命令行工具,在给定的Android模拟器或设备上检查和修改数据库。

在本教程中,我们假设您理论上对关系数据库有一定的了解,但在您的Android应用程序中使用它们之前需要进行一些复习。这个特殊的教程不需要任何工具; 这更多是一个理论练习。 .

但是,如果您计划开发依赖SQLite数据库的Android应用程序,则需要安装Android开发所需的工具,例如Android SDK和Eclipse IDE。查看Mobiletuts +上提供的其他许多有用的Android教程,以帮助您完成这些任务。 .

什么是SQLite?

SQLite是一个轻量级的关系数据库引擎。 SQLite速度快,占用空间小,非常适合Android设备。 每个SQLite数据库都存储在磁盘上的单个文件中,而不是像Oracle和Microsoft SQL Server这样重量级的基于服务器的数据库。 Android应用程序可以选择将私人应用程序数据存储在SQLite数据库中。

注意:如果您熟悉SQL,那么SQLite将很容易获得 。SQLite基本上是嵌入式设备的精简SQL数据库引擎。 有关SQLite及其功能,功能和限制的具体信息,请参阅SQLite联机文档。

数据库基础知识快速回顾

数据库只是一种持久性存储数据的结构化方式。 数据存储在表格中。 一个表具有不同数据类型的列。 表中的每一行代表一个数据记录。 您可能会发现像Excel电子表格这样的表格会有帮助。 对于面向对象编程的角度来说,数据库中的每个表经常表示一个对象(由一个类表示)。 每个表格列表示一个类别属性。 表中的每个记录都表示该对象的特定实例。

我们来看一个简单的例子。 假设你有一个公司数据库和一个名为Employee的表。 Employee表可能有五个类型的列:EmployeeID(数字),FirstName(字符串),LastName(字符串),Title(字符串)和Salary(数字)。 然后,您可以为名为John Doe的员工添加一条记录到数据库中,并为名为Anne Droid的员工另外添加一条记录。

数据库中的数据是要检查和操纵的。 表格中的数据可以是:

  • 添加(使用INSERT命令)
  • 修改(使用UPDATE命令)
  • 删除(使用DELETE命令)

您可以使用称为查询的方式在数据库中搜索特定数据。 查询(使用SELECT命令)可能涉及一个表或多个表。 要创建查询,您必须使用SQL命令语言指定感兴趣的表,数据列和数据值。 每个SQL命令都以分号(;)结尾。

国际象棋比赛数据库

真正理解SQLite数据库的功能的最好方法是通过一个简单的例子来完成工作,所以让我们这样做吧。 让我们假装我们有一个应用程序,可以跟踪随机国际象棋比赛中的玩家得分。 记录球员得分,然后在一系列比赛结束时确定胜利者。 每位球员的总比赛得分都是根据他们的表现计算出来的:

  • 四场热身赛(体重:每场总成绩的10%)
  • 一场半决赛(体重:总分的25%)
  • 一次最终(体重:总分的35%)

注意:对于锦标赛来说,玩家得分可以基于一个公式,这个公式可以决定赢得比赛的时间以及比赛结束时剩下的棋子类型和数量。 这样一来,一个强大的选手将会因为输掉几个强大的棋子而很快赢得比赛而获得高分。 也许风格和态度被评委包括在内,以鼓励乐趣,轻松玩乐。 如何计算分数对于我们如何定义数据库并不重要; 我们只是将它们存储在数据库中。 为了简单起见,我们将假设分数基于0-100的分数。

设计数据库模式

数据库模式就是根据表,数据列等简单定义数据库的结构。我们锦标赛数据库的模式非常简单: .

Tournamentscores数据库模式有三个表格:

  • 玩家表格包含玩家信息。
  • 游戏桌包含关于每个游戏的信息以及它对玩家总体锦标赛分数的计数。
  • GameResults表包含所有玩家的游戏分数。

SQLite3支持列的以下通用数据类型:

  • INTEGER(有符号整数)
  • REAL(浮点值)
  • TEXT(UTF-8或UTF-16字符串;使用数据库编码进行编码)
  • BLOB(数据块)

一旦确定了每个表格需要哪些列,就可以在数据库模式中创建一些表格。

使用表格

我们从创建Players表开始。 此表需要一个唯一的玩家ID来引用每个玩家。 我们可以将它作为主键(唯一标识此表中的记录)并设置其自动增量属性。 自动增量意味着每次添加新玩家记录时,记录都会得到一个新的唯一玩家ID。 我们还想存储每个玩家的名字和姓氏 - 不允许有空位。
在这里,我们可以使用CREATE TABLE SQL语句来生成Players表:

游戏表格非常相似。 我们需要一个独特的游戏ID来引用每个游戏。 我们还希望为每场比赛提供一个友好的名字,并且需要一个权重值来表示游戏对玩家的最终比赛得分(以百分比表示)。 以下是创建游戏表的SQL语句:

  • 每个玩家的全名显示为第一个结果列(从他们的名字和姓氏计算)
  • .每个玩家的锦标赛分数显示为第二个结果列(由给定玩家玩的所有游戏的加权分数计算得出)
  • 结果记录按比赛得分降序排列(第一名,第二名等)

该查询的结果如下所示:

结论

这就结束了我们对一个简单的SQLite数据库例子的探索:一个国际象棋比赛数据库。 希望你已经重新认识了关系数据库的概念,如表,记录和查询,并熟悉了许多常用的SQLite命令。 最后,您已经完成了示例数据库的设计和使用。 现在您已掌握了SQLite数据库的工作方式,您可以在Android应用程序中使用它们(本系列下一个教程的主题)。

关于作者

移动开发者Lauren Darcey和Shane Conder共同撰写了几本有关Android开发的书籍:一本深入的编程书籍,标题为Android无线应用程序开发Sams TeachYourself Android应用程序开发24小时。 不写时,他们花时间在公司开发移动软件并提供咨询服务。 他们可以通过电子邮件到androidwirelessdev+mt@gmail.com,通过他们的博客在androidbook.blogspot.comTwitter @androidwireless上联系。.

需要更多帮助编写Android应用程序? 查看我们的最新图书和资源!

Buy Android Wireless Application Development, 2nd Edition Buy Sam's Teach Yourself Android Application Development in 24 Hours Mamlambo code at Code Canyon

关注我们的公众号
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.