android四种数据存储及示例

来源:互联网 发布:淘宝商品鞋子详情图片 编辑:程序博客网 时间:2024/06/06 07:31

Android系统中,应用数据基本都是私有的,存放于“data/data/程序包名”目录下

实现应用间数据共享,使用Content Provider

如果删除应用时选择清除数据 相关文件将被删除


1.SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,Android提供了一个SQLiteDatabase的类。

2.SharedPreference: 除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件。

3.File: 即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。

4.ContentProvider: Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用Content Provider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。


sqlite

创建表

方法1:db.openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory) ;//这是SQLiteDatabase类实现的;

方法2:新建DBOpenHelper继承自SQLiteOpenHelper,先定义表名称,创建表放在onCreate里 比如

db.execSQL("CREATE TABLE IF NOT EXISTS "+表名称+"("+字段1+"TEXT,"+字段2+"TEXT,".......");");//这是用sql语句实现的

之后增删改查之前先进行初始化 比如:

SQLiteDatabase db = DBOpenHelper.getInstance(context).getWritableDatabase();

插入

db.execSQL("insert into "+表名称+"("+字段1+"TEXT,"+字段2+"TEXT,".......")"+"values(?,?,?) ",new String[]{值1,值2,值3});

或者
db.insert(表名称, "字段名", 值);//同样是两种方法 不同场景灵活使用

查询

Cursor cursor = db.execSQL("select * from"+表名称+"order by"+需查询字段+"desc",new String[]{});

if(cursor != null){

       list = new ArrayList<Test>();//new一个list用来塞值

  cursor.moveToFirst();

while (!cursor.isAfterLast()) {

Test item = new Test();//new一个Test表对象用来塞值

item.setRowId(cursor.getString(cursor.getColumnIndexOrThrow(字段名1)));

item.setRowId(cursor.getString(cursor.getColumnIndexOrThrow(字段名2)));

list.add(item);
cursor.moveToNext();

}

cursor.close();

}

删除字段

db.delete(表名,字段名1,String数组)

表对象及其字段定义放在公共类里 实现BaseColumns 字段名称同上


SharedPreference

一般通过SharedPreferences和Editor组合来实现

存储数据类型:boolean,int,float,long和String

存储目录在/data/data/<包名>/shared_prefs下 为XML文件

插入值

editor.putString(字段1,值1);

获取值

editor.getString(字段1,值1);

一般定义在项目的公共类里,在项目建立之初就考虑好


ContentProvider

通过Uri实现数据操作的方式。其步骤为:

  1. 在当前应用中定义一个类继承自ContentProvider。

  2. 在当前应用AndroidManifest.xml中注册此ContentProvider

  3. 其他应用程序通过ContentResolver和Uri来获取此ContentProvider的数据。

     URI格式由scheme/authority/path三部分构成 示例

     content://me.abitno.vplayer.mediaprovider/media_scanner

     URI中经常用到MIME  这是android内部用来定义特定扩展名的数据类型  在intent时用到

     ContentResolver经常和sqlite结合使用

     同样通过insert(), delete(), query()和update()方法进行数据操作


file文件存储

     无法更新数据 之前项目里用户名密码保存 应用更新后无法将保存的文件记录保留下来

     

 









0 0
原创粉丝点击