Android中常用的数据储存方式

本文介绍了Android应用中的四种主要数据存储方式:SharedPreferences、文件存储、SD卡存储和SQLite数据库存储。详细解释了每种方式的使用场景、API调用及注意事项。

一、SharedPreferences :一种主要 用于储存轻量级的数据如一些配置信息(如是否打开音效,是否使用振动,记住账号等等),储存的类型为key-value对,目录为File Explore-data-data-你的应用程序包名-shared_ prefs

 1.用法

由于该类是一个接口,故不能直接创建对象,所以是通过getSharePreferences()方法得到SharePreferences对象。

如下例所示:

SharedPreferences sharedPreferences=getSharedPreferences("save", MODE_PRIVATE);
    其中save表示文件名称,

    MODE_PRIVATE表示相关权限指只能被本应用程序读取,除此之外还有另外两种(但不推荐使用):
    MODE_WORLD_READABLE指能被其他应用程序读,但不能写。
    MODE_WORLD_WRITEABLE指能被其他应用程序读写。

读取数据

sharedPreferences.getXxx(String key,xxx defValue)

第一个参数表示储存时的key,第二个参数表示当没有该值时的返回值

写入数据

通过edit()方法

如Editor editor=sharedPrefrefrences.edit()

               editor.putXxx(String key,xxx value)

  切记要提交editor.commit();

当要删除指定数据时editor.remove(String key)

 切记要提交editor.commit();

当要删除全部数据时 editor.clear()

 切记要提交editor.commit();

二、文件储存

FileInputStream  openFileInput(String name) 打开对应的输入流

FileOutpuyStream openFileOutput(Stirng name,int mode)打开对应的输出流,并指定相关权限

然后就可以进行读写了

三、SD卡储存

1.先在AndroidManifast 中加入 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2.判断手机是否插入了SD卡且是否具有访问权限

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

}

四、sqlite数据库储存,该数据是一个轻量级的数据库,不需要安装。

1.创建数据库的两种方式

直接在类中创建

SQLiteDatabase db=SQLiteDatabase.openOrCreateDatabase("test.db", null);

注意:数据文件的路径是可以指定的,默认是File Explore-data-data-你的应用程序包名-database下

第二种:新建一个类并继承SQLiteOpenHelper类,如下例所示

public class DataBase extends SQLiteOpenHelper {
public DataBase(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
// 创建数据库
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
// 更新数据库
}
}

增删改查和其他数据库操作类似

db.insert(String table, String nullColumnHack, ContentValues values);  db.update(String table, Contentvalues values, String whereClause, String whereArgs);  db.delete(String table, String whereClause, String whereArgs);

查询有如下方法

db.rawQuery(String sql, String[] selectionArgs);  db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy);  db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);  db.query(String distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy,

最后要用到Cursor类,可以理解为是数据的集合,通过游标的移动可以到到你所想要的数据。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值