作为一个完整的应用程序,数据的存储与操作是必不可少的。Android系统为我们提供了四种数据存储 方式,分别是:SharedPreference、SQLite、File和ContentProvider。
SharedPreference:一种常用的数据存储方式,其本质就是基于xml文件存储键值对(key-value)数 据,通常用来存储一些简单的配置信息。
SQLite:一个轻量级的数据库,支持基本SQL语法,是Android系统中常被采用的一种数据存储方式。 Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
文件储存:即常说的文件(I/O)存储方法,常用于存储数量比较大的数据,但缺点是更新数据将是一件 困难的事情。
ContentProvider:它是Android系统中能实现应用程序之间数据共享的一种存储方式。由于Android系 统中,数据基本都是私有的,存放于“data/data/程序包名(package name)”目录下,所以要实现数据 共享,正确方式是使用ContentProvider。由于数据通常在各应用间是私密的,所以此存储方式较少使用, 但是其又是必不可少的一种存储方式。如果应用程序有数据需要共享时,就需要使用ContentProvider为这 些数据定义一个URI(包装成Uri对象),然后其他的应用程序就通过ContentResolver传入这个URI来对数 据进行操作。
SharedPreference主要存储一些配置信息:
感觉就是在用代码各种方法去动态编写或读取xml文件
使用步骤:
1.使用Activity类的getSharedPreferences(String name, int mode)方法获得 SharedPreferences对象,其中存储键值对(key-value)的文件的名称由 getSharedPreferences方法的name指定,mode则指定打开方式 。
2.使用SharedPreferences的edit()方法获得SharedPreferences.Editor对象。
3.通过SharedPreferences.Editor的putXxx(String key,Xxx value)方法写 入键值对(key-value)。
4.通过SharedPreferences.Editor的commit()方法提交保存键值对(keyvalue)。
实例:
SharedPreferences sharedPreferences = getSharedPreferences("type", Context.MODE_APPEND); Editor editor = sharedPreferences.edit(); // String字符串型 editor.putString("String", "words"); // Boolean布尔型 editor.putBoolean("Boolean", true); // Integer整型 editor.putInt("Integer", 1); // Long长整型 editor.putLong("Long", 1000000); // Float浮点数型 editor.putFloat("Float", 3.5f); editor.commit();
生成文件type.xml:
其他方法:
Sqlite这个重要
在Android中,SQLite的使用涉及两个重要的类,SQLiteDatabase和SQLiteOpenHelper:
字面意思数据库创建的工具类,传入一些必要参数即可new出对应Helper类,再用Helper类调用getReadableDatabase和getWritableDatabase可直接创建对应数据库,其中onCreate onUpgrade onOpen这三个方法为回调函数
注:其实这些方法是为了代替sq语句使用面向对象思想来设计的,用sq语句同样可以完成。
须知:
ContentValues基本就等于一个Map(作为表中的一行的各种数据),可往里面添加键值对。
conflictAlgon:冲突解决方案。例如当数据表主键的唯一性检测出错的时候,就会按照该值设定的值进行处理。
nullColumnHack: 当values参数为空或者里面没有内容的时候,我们insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情况,我们要在这里指定一个 列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入。(一般此参数就写为null)
Query第二个参数意为要查回的数据为这一行中的哪几列列名
Cursor游标是处理结果集的一种机制吧,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作数据。游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,为一种数据用完需关闭。
使用步骤:
注:factory为null则使用默认
查看这个数据库文件(数据库文件存储在android模拟器上当然得有模拟器插着手机才能看到):
创建的数据库文件位于/data- /data//databases/<数据库名>.db