Android之三大数据存储

实现数据存储的三种方式:

文件存储
SharedPreference存储
SQLite数据库存储
有关三种方式的数据所在的位置:
在这里插入图片描述
下面重点讲解三种不同的存储

- 文件存储

主要分为内部存储、外部存储。
**内存存储:**使用了FileInputStream类中的openFileInput()方法,用于读取数据;使用了FileOutputStream类中的openFileOutput()方法,用于写入数据。
外部存储:使用Enviroment类中的getExternalStorageDirectory()方法对外部存储上的文件进行读写。
总之:

FileOutputStream -> openFileOutput()

FileInputStream -> openFileInput()

Environment -> getExternalStorageDirectory()

内部存储的写入文件步骤
第一

获取文件输出流对象 FileOutputStream

第二

使用FileOutputStream类的openFileOutput(String name, int mode)方法

第三

调用FileOutputStream对象的write()方法写入文件

第四

调用flush()方法,因为write()方法是写入缓冲区的,调用flush()方法将缓冲中的数据写入到文件,清空缓存

第五

close()方法用于关闭FileOutputStream

SharedPreferences存储

SharedPreferences是一种数据存储方式,用来存储一些简单的信息,位于android.content包中,以键值对的模式进行存储,键值对(key-value)。
其中获取的方式包括:使用getSharedPreferences()方式,使用getPreferences()方式获取。
实现 SharedPreferences存储步骤:
第一

调用 SharedPreferences类的edit()方法,获取 SharedPreferences.Editor对象

第二

调用一个 SharedPreferences.Editor对象的putXXX的方法获取数据

第三

使用commit()方法提交数据

SQLite数据库存储
SQLite是一款轻量级的关系型数据库,它的运算很快,占用空间小,不仅有SQL语法支持,独立,还有数据库的ACID事务,SQLite数据库为一种嵌入式数据库。
其中,它是QLiteDatabase的帮助类,用于管理数据库的创建和升级,SQLiteOpenHelper类为抽象类,有两个要重写的方法:onCreate()和onUpgrade(),用于去实现创建和升级数据库。
1.创建一个继承自SQLiteOpenHelper类
在这里插入图片描述
二.实现对数据的增删改查操作

增加数据

  • 使用ContentValues的put()方法以键值对的形式存储基本类型数,可以理解为键就是表中属性名,值就是表中数据。还常用方法clear()清空所有数据。
  • SQLiteDatabase用于增添数据的辅助性方法insert(),三个参数含义(被操作的表名,空值字段的名称,数据即ContentValues对象),第二个参数一般传入null。

删除数据

  • SQLiteDatabase用于删除数据的辅助性方法delete(),第一个参数表示表名,第二第三个参数用于约束删除某一行或几行的数据。

修改数据库

  • SQLiteDatabase用于修改数据的辅助性方法update() ,提供四个参数(表名,ContentValues对象,约束,约束)

查询数据库

  • SQLiteDatabase用于查询数据的辅助性方法quary(),需要至少七个参数(table, columns, selection,
    selectionArgs, groupBy, having,
    orderBy)(表名,要查询出的列名,查询条件子句,对应于selection语句中占位符的值,要分组的列名,分组后过滤条件,排序方式),多数情况下少数几个参数就能完成查询操作了。这个方法会返回一个Cursor,查询到的数据都会从它取出。
  • Cursor常用方法:

moveToFirst():将指针移动到结果集的第一行; getColumnIndex():获取某一列在表中对应位置的索引;
close():关闭指针。 move(int offset):以当前位置为参考,移动到指定行 moveToLast():移动到最后一行
moveToPosition(int position):移动到指定行 moveToPrevious():移动到前一行
moveToNext():移动到下一行 isFirst():是否指向第一条 isLast():是否指向最后一条
isBeforeFirst():/是否指向第一条之前 isAfterLast():是否指向最后一条之后 isNull(int
columnIndex):指定列是否为空(列基数为0) isClosed():游标是否已关闭 getCount():总数据项数
getPosition():返回当前游标所指向的行数 getString(int columnIndex):返回当前行指定列的值

相关查询代码


Cursor cursor = db.rawQuery("select * from userInfo", null);
while (cursor.moveToNext()) {
    String _id = cursor.getString(cursor.getColumnIndex("_id"));
    String name = cursor.getString(cursor.getColumnIndex("name"));
    int age = cursor.getInt(cursor.getColumnIndex("age"));
    String sex = cursor.getString(cursor.getColumnIndex("sex"));
}
cursor.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值