在 Android 应用中使用数据库

本文详细介绍了在 Android 应用中使用 SQLite 数据库的步骤,包括创建数据库架构和契约类,使用 SQLiteOpenHelper,数据库的连接流程,以及如何提取、插入和查询数据。重点讲解了 Contract 类的作用和创建过程,以及 Cursor 对象在数据库操作中的重要性。
摘要由CSDN通过智能技术生成

概述

在 Android 代码中创建和修改 SQLite 数据库,我们可以参考 Android 文档 Save data using SQLite,我们在 Android 中需要采取两个基本步骤来设置 SQLite 就可以和数据库互动了。如下所示:

  1. Define a schema and contract-创建架构和契约类
  2. Create a database using an SQLOpenHelper-使用 SQLiteOpenHelper 创建数据库

完成上面两步后就可以执行创建、读取、更新和删除我们的数据的操作了。

创建架构和契约类

创建数据库架构其实就是需要规划数据库结构。所以我们需要问两个问题:

  1. 表格的名称是什么?
  2. 表格里列的名称和数据类型是什么?

还记得下面的语句吗?

CREATE TABLE <table_name> (<column_name_1> <data_type_1>, <column_name_2> <data_type_2>, ...);

以宠物收容所场景为例:

Attribute Storage Class
Name(宠物名) TEXT(文本)
Breed(品种) TEXT(文本)
Gender(公母) INTEGER(0-未知,1-公、2-母)
Weight(体重) INTEGER(为了简单)

绘制表格,规划数据库结构
表格

创建 Contract (契约)类

为什么要使用 Contract 类?

看个创建表格的两个例子:

String makeTableStatement = "CREATE TABLE entry (_id INTEGER PRIMARY KEY, entryid TEXT, title TEXT, subtitle TEXT)";

---

String SQL_CREATE_ENTRIES = "CREATE TABLE" + FeedEntry.TABLE_NAME + "(" + FeedEntry._ID + "INTEGER PRIMARY KEY," + FeedEntry.COLUMN_NAME_ENTRY_ID + "TEXT," + FeedEntry.COLUMN_NAME_TITLE+"TEXT);"

观察上述代码,我们发现第二个创建表格的语句中 表格名称和列名称存储在了常量里。 在生成 SQL 指令时,消除了出现拼写错误的可能性,或者不小心将不应该大写的字母大写了。如果想更改实际的列名称,也只需在一个地方更改下就行了。

总结使用 Contract 类的三个理由:

  • 帮助我们定义架构,规定了去哪里查找数据库常量;
  • 在生成 SQL 指令时,可以帮助我们避免拼写错误;
  • 使我们更容易更新数据库架构

创建 Contract 类

根据之前规划的数据库结构即我们定义的架构,我们在项目的主包下面创建一个包名为 data,然后在改包下创建一个新的 java 类名为 PetContract,将该类用 final 修饰,因为它只是用来提供常量,我们不需要扩展或为此外部类实现任何内容。使用我们定义的架构,为每个表格创建一个内部类,并为每个列标题创建常量,代码如下所示:

public final class PetContract {
   
    private PetContract() {}

    public static final class PetEntry implements BaseColumns {
   

        public final static String TABLE_NAME = "pets";

        public final static String _ID = BaseColumn._ID;
        public final static String COLUMN_PET_NAME = "name";
        public final static String COLUMN_PET_BREED = "breed";
        public final static String COLUMN_PET_GENDER = "gender";
        public final 
  • 7
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值