SQLite数据库存储

这篇博客介绍了如何在Android应用中使用SQLite数据库,包括创建数据库和表、设置触发机制,以及如何通过adb工具检查数据库状态。在数据库升级方面,讲解了如何利用SQLiteOpenHelper的onUpgrade()方法进行数据库更新,确保新增表的创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

Android系统是内置了数据库的!

SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百KB的内存就足够了,因而特别适合在移动设备上使用。

SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务,

SQLite 比一般的数据库要简单得多,它甚至不用设置用户
名和密码就可以使用。

Android 正是把这个功能极为强大的数据库嵌入到了系统当中,使得本地持久化的功能有了一次质的飞跃。

二、创建数据库

2.1、前言

Android为了让我们能够更加方便地管理数据库,专门提供了一个SQLiteOpenHelper帮助类,借助这个类就可以非常简单地对数据库进行创建和升级。

首先SQLiteOpenHelper 是一个抽象类, 这意味着如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。

SQLiteOpenHelper 中有两个抽象方法,分别是onCreate()
和onUpgrade(), 我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑。

sQLiteOpenHelper中还有两个非常重要的实例方法: getReadableDatabase()和 getWritableDatabase()。

这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。

不同的是,当数据库不可写入的时候(如磁盘空间已满), getReadableDatabase()方 法返回的对象将以只读的方式去打开数据库,而getWritableDatabase()方法则将出现异常。

SQLiteOpenHelper中有两个构造方法可供重写,一般使用参数少一点的那个构造方法即可。

这个构造方法中接收4个参数,第一个参数是Context,,必须要有它才能对数据库进行操作。

第二个参数是数据库名,创建数据库时使用的就是这里指定的名称。

第三个参数允许我们在查询数据的时候返回一个自定义的Cursor, -般都是传人null。

第四个参数表示当前数据库的版本号,可用于对数据库进行升级操作。

构建出sQLiteOpenHelper 的实例之后,再调用它的getReadableDatabase() 或getWritableDatabase()方 法就能够创建数据库了,数据库文件会存放在/data/data//databases/目录下。

此时,重写的onCreate()方法也会得到执行,所以通常会在这里去处理一些创建表的逻辑。

2.2、新建DatabaseTest项目

2.2.1、创建数据库和表

这里创建一个名为BookStore.db的数据库,然后在这个数据库中新建一张Book表,表中有id(主键)、作者、价格、页数和书名。

SQLite不像其他的数据库拥有众多繁杂的数据类型,它的数据类型很简单,integer 表示整型,real表示浮点型,text表示文本类型,blob 表示二进制类型,primary key 设置主键,autoincrement关键字表示自增长…

新建MyDatabaseHelper类继承自SQLiteOpenHelper,代码如下所示:

package com.example.databasetest;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

import androidx.annotation.Nullable;

public class MyDatabaseHelper extends SQLiteOpenHelper {
   

    public static final String CREATE_BOOK = "create table Book (" +
            "id Integer primary key autoincrement," +
            "author text," +
            "price real," +
            "pages integer," +
            "name text)";

    private Context mContext;

    public MyDatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值