Android常用数据存储

1 SharedPreferrences存储

1.1 SharePreferences的存储特点

  • SharePreferences是使用键值对的方式来存储数据,当保存一个数据的时候,要给这条数据提供一个相对应的键,并且它支持多种不同数据的存储。

1.2 SharePreferences存储方式

  • 先获取到SharePreferences对象:共三种方式。
    • 第一种:Context类中提供了** getSharePreferences()**方法,此方法接收两个参数,第一个参数为指定文件的名称,不存在该文件则会自动创建。第二个参数指定了对该文件的操作模式,目前只有MODE_PROVITE这一种可选,和直接传入0是一样的,表示只有当前程序可以对该文件进行读写。
    • 第二种:Activity类中的** getPreferences()**方法,这个方法只接收一个操作模式参数,因为该方法回自动将当前活动的类名作为文件名。
    • 第三种:PreferenceManager类中的**getDefaultSharedPreferences()**方法,这是一个静态方法,它接收一个参数为context,并自动使用当前应用程序包名作为前缀来命名文件。
  • 得到SharePreferences对象后,向文件存储数据分为三步:
    • 第一步:调用该对象的edit()方法获取一个SharePreferences.Editor对象。
    • 第二步:向edit对象种中添加数据,根据添加不同的数据类型,选择putString(),putInt(),putBoolean()等等…
    • 第三步:提交edit,调用edit的apply方法提交,从而完成数据存储操作。

在这里插入图片描述

1.3 利用SharePreferences获取数据

  1. 获取SharePreferences对象。
  2. 调用该对象的getString(),getInt(),getBoolean()方法传入键名来获取相对应的数据。
    在这里插入图片描述

在这里插入图片描述

2 SQL数据库存储

2.1 什么是SQLite数据库

  • SQLite是Android的内置数据库,是一款轻量级的关系型数据库,运算速度很快,占用资源很少,它不仅支持标准的SQL语法,还遵循了数据库的ACID事务。

2.2 相比于SharePreferences存储的优点

  • SharePreferences存储只适用于一些简单的数据和键值对,而SQLite可以存储大量复杂的关系型数据。

2.3 如何使用SQL数据库存储

  • 为了更方便的管理SQL数据库,Android提供了一个SQLiteOpenHelper类,这是一个抽象类,首先要创建一个类继承他,并重写里面的两个抽象方法,onCreate()和onUpgrade(),这两个方法在创建,升级数据库会被调用。注意:如果重复的创建一个数据库,而不更改它的版本号,则不会执行这两个方法,onCreate方法只在该数据库第一次创建时被调用。
  • 在继承抽象类中,还要写一个构造方法,其中有两个构造方法可供重写,我们最常使用的是参数少一点的哪个构造方法,这个构造方法需要接收4个参数,第一个参数是Context,第二个是要建立的数据库名,第三个是在查询数据时返回的一个Cursor对象,我们一般填null即可,第四个参数表示当前数据库的版本号。
  • SQLiteOpenHelper中有两个重要的实例方法:getReadableDatabase()和getWritableDatabase()。这两个方法都可以创建或打开一个现有的数据库,并返回一个可以对数据库进行读写操作的SQLiteDatabase对象。不同点为:当数据库不可写入(比如磁盘空间已满)时,getReadableDatabase()方法返回的对象将以只读形式打开数据库,而getWritableDatabase()方法则会出现异常。
    在这里插入图片描述

2.4 对数据库进行操作

2.4.1 创建数据库

  • 创建一个刚刚继承类的对象
  • 调用getWritableDatabase()或者getReadableDatabase()方法。
    在这里插入图片描述

2.4.2 插入数据

  1. 根据getWritableDatabase()方法获取SQLiteDatabase对象db。
  2. 创建ContentValue对象values。
  3. 调用values的putString()…等方法,存入数据。
  4. 调用db的insert()方法传入三个参数,第一个是表明,第二个用于在未指定添加数据的情况下给某些可能为空的值赋值为null,我们直接传入null即可,第三个参数是我们要传入的一个ContentValues对象。
    在这里插入图片描述

2.4.3 修改更新数据

  1. 根据getWritableDatabase()方法获取SQLiteDatabase对象db。
  2. 创建ContentValue对象values。
  3. 通过values.put*****()传入要修改的数据。
  4. 调用db的update()方法,这个方法接收4个参数,第一个是表名,第二个是ContentValues对象,第三个对应SQL语句中的where部分,对于更新位置的一个指控,第四个参数提供一个字符串数组来确定第三个参数指控的具体项。
    在这里插入图片描述

2.4.4 删除数据

  1. 根据getWritableDatabase()方法获取SQLiteDatabase对象db。
  2. 调用db的delete()方法,这个方法接收三个参数,第一个参数是表名,第二第三个和update()方法的第三第四个意义相同。
    在这里插入图片描述

2.4.5 查询数据

  1. 根据getWritableDatabase()方法获取SQLiteDatabase对象db。

  2. 调用db的query()方法,这个方法接收7个参数,意义如下:我们一般只传入第一个表名,后面的都传入null来获取表中所有的数据。在这里插入图片描述

  3. 创建Cursor对象来接收query方法的返回值。
    在这里插入图片描述

2.5 以上操作的结果

  • 存储后查询
    在这里插入图片描述

  • 更改后查询
    在这里插入图片描述

  • 删除后查询
    在这里插入图片描述

3 Litepal操作数据库

3.1 什么是LitePal

  • LitePal是一个开源数据库,它采用了对象关系映射(ORM)的模式,将我们平时开发常用的一些功能进行了封装。

3.2 使用LitePal的步骤

  1. 在dependencies闭包中添加litepal的依赖。
    在这里插入图片描述

  2. 配置litepal.xml文件,在main目录下新建assets目录,然后在次目录下新建litepal.xml文件,dbname为数据库名,version为数据库等级(更新会用到它来调整),list里面为数据库中加入的表名(这里设置为Book表):
    在这里插入图片描述

  3. 在注册表中把项目的application配置为org.litepal.LitePalApplication。
    在这里插入图片描述

  4. 创建Book表,由于litepal是采取对象关系映射模式,所以我们可以定义一个Book类,来创建表的内容。如下:
    在这里插入图片描述

  5. 若想在数据库中加入其他表,则只需要在建立一个类,然后再litepal.xml文件中加入这个表,再将version的版本号加1即可。

3.3 操作数据库

3.3.1 建立数据库

  • 进行任意一次的数据库操作,即可完成建立数据库的功能。
  • 在这里插入图片描述

3.3.2 添加数据

  1. 要进行数据库的CRUD操作,要让建表的类Book继承DataSupport类。
  2. 然后创建book对象,对其中的变量进行赋值。
  3. 最后调用book的save()方法即可存入到数据库中。
    在这里插入图片描述

3.3.3 更新数据

  1. 建立book对象,对其中想更改的变量赋值。
  2. 然后调用book的updateAll()方法,该方法中指定一个约束条件,以此来判断更改哪项数据。
    在这里插入图片描述

3.3.4 删除数据

  • 调用DataSupport的deleteAll方法,该方法中接收的第一个参数为要删除数据所在的表,后面的参数为删除数据项的约束条件。
    在这里插入图片描述

3.3.5 查询数据

  1. 由于litepal数据库采用对象关系映射,所以我们直接建立集合来存储表中的数据对象。
  2. 调用DataSupport的findAll()方法来获取集合。
  3. 通过循环遍历集合,观察所查询到的数据。
    在这里插入图片描述

3.4 以上操作的结果

  • 添加数据后查询
    在这里插入图片描述
  • 更新数据后查询
    在这里插入图片描述
  • 删除数据后查询
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值