Android数据存储小结

1、云存储、File文件存储、SharedPreference存储、SQLite存储(数据库存储)

默认保存路径:
		file			/data/data/包名/files/文件名			
		sp				/data/data/包名/shared_prefs/文件名		
		sql				/data/data/包名/databases/数据库名

2、File文件存储

在Android中写入和读取文件的方法,和 Java中实现I/O的程序是一样的,Context类中提供了
openFileInput()和openFileOutput()方法来打开数据文件里的文件IO流。下面直接通过一个demo学习
Android如何通过文件来保存数据。
	
存储,关键方法
	
	String text = "text";
    BufferedWriter bufferedWriter = null;
    try {
        //MODE_PRIVATE为默认操作模式,私有数据只能被应用本身访问,写入会覆盖原文件
		//MODE_APPEND 检查是否存在,存在就在文件追加内容,否则新建
		//MODE_WORLD_READABLE 可以被其他应用读取
		//MODE_WORLD_WRITEABLE	可以被其他应用写入
		FileOutputStream fileOutputStream = openFileOutput("data", Context.MODE_PRIVATE);
        bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
        bufferedWriter.write(text);
    }catch (FileNotFoundException e){
        e.printStackTrace();
    }catch (IOException e){
        e.printStackTrace();
    }finally {
        if (bufferedWriter!=null){
            try {
                bufferedWriter.close();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }

读取,关键方法
	FileInputStream fileInputStream=openFileInput("data");
        bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
        String line;
        while((line=bufferedReader.readLine())!=null){
            content.append(line);
        }

3、SharedPreference存储

SharePreferences是一种轻型的数据存储方式,常用来存储一些简单的配置信息,如int、string、
boolean、float和long。它的本质是基于XML文件存储key-value键值对数据。

实现步骤:
	(1)调用getSharedPreference()方法获取SharedPreference对象,提供两个参数,指定文件名
		和操作模式
	(2)调用SharedPreference对象的edit()方法获得SharedPreferences.Editor引用对象
	(3)调用Edit接口的形如put某某某()方法以键值对形式保存某某某类型的数据
	(4)调用Edit接口的commit()方法提交键值对。
	一定注意,不用SharedPreferences对象去存储或修改数据,而是通过Editor对象。但获取数据时需要调用SharedPreferences对象的get某某某()方法了。通常使用SPUtils

4、SQLite数据库存储

SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,在存储大量复杂的关系型数
据的时可以使用,比前面学过的只适用于存储简单数据的两种存储方式要好很多。

(1)操作步骤:
	先学习一个类SQLiteOpenHelper,它是SQLiteDatabase的帮助类, 用于管理数据库的创建和升
	级。SQLiteOpenHelper的使用步骤:
	第一步:自定义帮助类并继承SQLiteOpenHelper,并重写两个方法:onCreate()和 onUpgrade
	(),分别在这两个方法中去实现创建、升级数据库的逻辑。还需要一个构造方法,这里用含有四个参
	数的构造方法就可以,
	第二步:创建数据库时,先实例化一个自定义的帮助类,并提供四个参数,含义是(上下文,数据库
	名,创建Cursor的工厂类,版本号)。
	第三步:用帮助类对象的getReadableDatabase() 和getWritableDatabase()去创建或打开一个
	现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),并返回一个可对数据库SQLiteDatabase。
	第四步:之后就可以利用得到的数据库进行增删改查的操作了。

(2)常用方法和类:
	(a)execSQL()方法
			这个方法非常万能,它可接受和处理SQL语句,换句话说,后面将要学习的增删改查不仅可
			以用提供好的现成的辅助性方法,还可直接用原生SQL语句再调用execSQL()就够了
	(b)(增加数据 insert方法)ContentValues类
			实现了Parcelable内部维护了一个HashMap<String,Object>,常用它put()方法以键
			值对的形式存储基本类型数据。在增和改会用到它,可以理解为键就是表中属性名,值就是
			表中数据。还常用方法clear()清空所有数据,例如:
				contentValues.put("name","zhangsan");
				contentValues.put("age","18")......;
				db.insert("student",null,contentValues)contentValues.clear();
	(c)删除数据delete()
			第一个参数还是表示表名,第二第三个参数用于约束删除某一行或几行的数据。比如需要删
			除student表中年龄大于17的记录:
				db.delete("student","age>?",new String[]{"17"});
	(d)update() 方法提供四个参数,(表名,ContentValues对象,约束,约束)
	(e)查询方法quary()
			需要至少七个参数(table, columns, selection, selectionArgs, groupBy, 
			having, orderBy),含义是:(表名,要查询出的列名,查询条件子句,对应于
			selection语句中占位符的值,要分组的列名,分组后过滤条件,排序方式)。(多数情况
			下少数几个参数就能完成查询操作了)这个方法会返回一个Cursor,查询到的数据都会从
			它取出。Cursor常用方法:moveToFirst()将指针移动到结果集的第一行;
			getColumnIndex()获取某一列在表中对应位置的索引;get某某某()传入
			索引以获取相应位置的某种类型的数据;close()关闭指针。例如:
				Cursor cursor = db.quary("student",null,null.null,null,null,null);
				if(cursor!=null){
					while(cursor.moveToNext){
						String name = cursor.getString(cursor.getColumnIndex("name"));
						int age = cursor.getInt(cursor.getColumnIndex("age"))
					}
					cursor.close();
				}

(3)升级数据库见数据库升级小结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值