File: 即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
SharedPreference: 除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。
存储数据的类型: boolean, float, int, long, String
数据保存的路径: /data/data/packageName/shared_prefs/yyy.xml
可以设置数据只能是当前应用读取, 而别的应用不可以应用卸载时会删除此数据
SharedPreferences: 对应sp文件的接口
context. getSharedPreferences (String name, int mode): 得到SP对象
name: 文件名(不带.xml)
mode: 生成的文件模式(是否是私有的,即其它应用是否可以访问)
Editor sp.edit() : 得到Editor对象
Xxx sp.getXxx(name,defaultValue): 根据name得到对应的数据
Editor : 能更新sp文件的接口
Editor putXxx(String name, Xxx value) : 保存一个键值对, 没有真正保存到文件中
Editor remove(name)
commit(): 提交, 数据真正保存到文件中了
SD卡存储:文件类型: 任意
数据保存的路径:
路径1: /storage/sdcard/Android/data/packageName/files/
路径2: /storage/sdcard/xxx/
路径1 :其它应用可以访问,应用卸载时删除
路径2 : 其它应用可以访问, 应用卸载时不会删除
必须保证sd卡挂载在手机上才能读写, 否则不能操作
Environment : 操作SD卡的工具类
得到SD卡的状态:Environment.getExternalStorageState()
得到SD卡的路径:Environment.getExternalStorageDirectory()
SD卡可读写的挂载状态值:Environment.MEDIA_MOUNTED
context. getExternalFilesDir():
得到/mnt/sdcard/Android/data/pageckage_name/files/xxx.txt
操作SD卡的权限:
android.permission.WRITE_EXTERNAL_STORAGE
应用运行需要保存一系列有一定结构的数据, 比如说公司员工信息
文件类型: .db
数据保存的路径: /data/data/projectPackage/databases/xxx.db
默认情况下其它应用不能访问, 当前应用可以通过ContentProvider提供其它应用操作
应用卸载时会删除此数据
SQLite:SQLite是一个轻量级的数据库,支持基本的SQL语法,是常被采用的一种数据存储方式。 Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的api
特点:
安装文件小: 最小只有几百K, Android系统已经安装
支持多操作系统: Android, WP, IOS, Windows, Linux等
支持多语言: 比如 Java 、 PHP、C#等.
处理速度快: 处理速度比Mysql, Oracle, SqlServer都要快(数据量不是特别大)
Sqlite中的一个数据库就是一个.db文件(本质上.db的后缀都可以不指定)
Sqlite操作数据库的sql语句基本与mysql一样, 但需要注意下面2个点:
最大的不同在于创建表时可以不用指定字段类型, Sqlite可以适时的自动转换, 但除varchar类型外最好指定类型
Sqlite中的主键名称建议使用_id
操作数据库的方法:
create table employee (
_id integer primary key autoincrement, /*主键,自增长*/
name varchar, /*字符串*/
salary double, /*小数*/
birthday date /*日期, 可直接插入日期格式字符串*/)
SQLiteOpenHelper: 数据库操作的抽象帮助类
SQLiteOpenHelper(Context context, String name,
CursorFactory factory, int version) : 构造器, 指定数据库文件名和版本号
abstract void onCreate(SQLiteDatabase db) : 用于创建表
abstract void onUpgrade() : 用于版本更新
SqliteDatabase getReadableDatabase() : 得到数据库连接
long insert(): 用于执行insert SQL, 返回id值
int update(): 用于执行update SQL
int delete(): 用于执行delete SQL
Cursor query(): 用于执行select SQL, 返回包含查询结果数据的Cursor
void execSql(sql) : 执行sql语句
void close() 关闭数据库的连接,释放资源
beginTransaction(): 开启事务
setTransactionSuccessful(): 设置事务是成功的
endTransaction(): 结束事务, 可能提交事务或回滚事务
openDatabase(String path, CursorFactory factory, int flags): 得到数据库连接
nt getCount() : 匹配的总记录数
boolean moveToNext() : 将游标移动到下一条记录的前面
Xxx getXxx(columnIndex) : 根据字段下标得到对应值
int getColumnIndex(columnname): 根据字段名得到对应的下标
void close():关闭游标,释放资源
SQLiteOpenHelper: 数据库操作的抽象帮助类
SQLiteOpenHelper(Context context, String name,
CursorFactory factory, int version) : 构造器, 指定数据库文件名和版本号
abstract void onCreate(SQLiteDatabase db) : 用于创建表
abstract void onUpgrade() : 用于版本更新
SqliteDatabase getReadableDatabase() : 得到数据库连接
ContentProvider: Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用Content Provider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。