这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战
今天来给大家讲一下Android中如何存储数据。我编写Android使用的是Java语言,所以今天讲的也是Java版的数据存储。在Android中,数据存储主要有三种,文件存储、Sp、SQLite。文件存储就是我们平时的IO流,是非常传统的一种方式。而Sp是Android中的,利用XML文件存储数据的一种方式,要比文件存储简单。SQLite就是一个数据库了,基本操作和数据库大致一样。
1、文件存储
先写一个简洁的登陆界面:
布局文件activity_main.xml如下:
1 | ini复制代码<?xml version="1.0" encoding="utf-8"?> |
MainActivity中基本代码如下,就是简单的声明控件和关联控件:
1 | scala复制代码public class MainActivity extends AppCompatActivity { |
1.1、保存文件
接下来实现一下点击事件save():
1 | scss复制代码public void save(View view) { |
代码看起来有点乱,我在中间空了许多,主要代码就那些。利用Context中的openFileOutput(String name, int mode)方法,传入文件名和操作模式。获取一个FileOutputStream对象,然后在存储文件。我这里直接用#来拼接,这样是有问题的。这里只是为了方便。
1.2、读取文件
我们写一个方法load,用来读取文件:
1 | ini复制代码private void load() { |
这里使用了Context中的openFileInput()方法,获取流,然后读取文件。因为文件流比较少用,我就讲到这里。
2、SharedPreferences简称Sp
Sp是一种用xml文件存储数据的方式,下面我具体讲一下。
2.1、Sp的创建
sp的创建方式有三种,第一种,之直接使用Context中的getSharedPreferences()方法,传入文件名和操作模式:
1 | csharp复制代码private void initView(){ |
第二种,使用Activity中的getPreferences()方法,传入一个操作模式,文件名自动以类名命名:
1 | ini复制代码SharedPreferences sp = getPreferences(Context.MODE_PRIVATE); |
第三种,使用PreferenceManager中的getDefaultPreferences()方法,传入一个Context参数:
1 | ini复制代码SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); |
2.2、用Sp保存数据
使用Editor对象存储,Editor中对应的数据类型有对应的方法。putString、putInt…
1 | java复制代码private void initData(){ |
2.3、获取Sp中的文件
获取的时候直接用存储时的文件名创建一个Sp对象,就可以读取数据:
1 | csharp复制代码private void initData(){ |
3、SQLite数据库
3.1、SQLite数据库的创建
SQLite数据库的创建需要实现抽象类SQLiteOpenHelper,具体先定义一个类MySQLiteOpenHelper继承SQLiteOpenHelper:
1 | java复制代码public class MySQLiteOpenHelper extends SQLiteOpenHelper { |
这里写了三个方法,其中onCreate()和onUpgrade()方法为SQLiteOpenHelper中的抽象方法。onCreate()在数据库创建时调用,只。而onUpgrade()在数据库升级时调用()(Version改变时)。所以onCreate()用于初始化表结构、onUpgrade()用于更新表结构。调用db.execSQL()方法,传入一个SQL语句就好了。
3.2、获取数据库
在Activity中创建MySQLiteOpenHelper的实例,然后通过这个实例获取数据库:
1 | java复制代码private void initData(){ |
3.3、数据库操作
因为篇幅的关系,这里先不讲这么多了。SQLite中可以调用DataBase对象的execSQL()方法,通过SQL语句完成大多数操作。具体Android中特有的操作后面我再讲。大家有兴趣的话可以去了解一下郭林大神的LitePal,用来操作SQLite数据库方便很多。
本文转载自: 掘金