开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
2、SharedPreferences存储
不同于文件存储,SharedPreferences是使用键值对的方式来存储数据的。
Context类中的getSharedPreferences()方法,获取SharedPreferences对象。
第一个参数:指定SharedPreferences文件的名称。(如果指定文件的名称不存在就会创建一个,SharedPreferences文件都是存放在/data/data//shared_prefs目录)。
第二个参数:指定操作模式。只有MODE_PRIVATE可选,MODE_PRIVATE:只有当前的应用程序才可以对这个SharedPreferences文件进行读写。
(1)将数据存储到SharedPreferences中
具体实现:
val editor=getSharedPreferences("data", Context.MODE_PRIVATE).edit()
editor.putString("name","Tom")
editor.putInt("age",28)
editor.putBoolean("married",false)
editor.apply()//提交
如何证实数据是否已经保存成功了呢?
使用快捷键Ctrl+Shift+A(Mac系统是command+shift+A)打开搜索功能,在搜索框输入“Device File Explorer”即可找到这个工具,我们在这工具里找到/data/data/com.example.sharedpreferencestest/shared_prefs/目录,里面有一个生成的data.xml文件,双击打开,查看里面的内容。
(2)从sharedpreferences中读取数据
具体实现
val prefs=getSharedPreferences("data",Context.MODE_PRIVATE)
val name=prefs.getString("name","")
val age=prefs.getInt("age",0)
val married=prefs.getBoolean("married",false)
Log.d("MainActivity","name is $name")
Log.d("MainActivity","age is $age")
Log.d("MainActivity","married is $married")
3、SQLite数据库存储
1)创建数据库
SQLiteOpenHelper类是一个抽象类,有两个抽象方法,onCreate()和onUpgrade()。
- onCreate(SQLiteDatabase):在数据第一次生成的时候会调用这个方法,也就是说,只有创建数据库的时候才会调用,还可以在这个方法里生成数据库表。
- onUpgrade(SQLiteDatabase,int,int):当数据库需要升级的时候,Android系统会自动调用这个方法,一般在这个方法里删除数据表,并建立新的数据表。
SQLiteOpenHelper类的构造方法:
第一个参数:Context
第二个参数:数据库名
第三个参数:运行我们在查询数据时放回一个自定义的Cursor,一般传入null即可
第四个参数:表明当前数据库的版本号
步骤
定义SQLiteOpenHelper的子类,在该类中创建一个名为BookStore.db的数据库
class MyDatabaseHelper(val context: Context,name:String,version:Int) :SQLiteOpenHelper(context,name,null,version) {
private val createBook = "create table Book(" +
" id integer primary key autoincrement," +
"author text," +
"price real," +
"pages integer," +
"name text)"
private val createCategory = "create table Category(" +
"id integer primary key autoincrement," +
"category_name text," +
"category_code integer)"
override fun onCreate(p0: SQLiteDatabase?) {
if (p0 != null) {
p0.execSQL(createBook)
p0.execSQL(createCategory)
}
Toast.makeText(context,"Create succeeded",Toast.LENGTH_SHORT).show()
}
override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) {
if (p0 != null) {
p0.execSQL("drop table if exists Book")
p0.execSQL("drop table if exists Category")
onCreate(p0)
}
}
}