Android的数据存储

    2015年的最后一天,今天跟大家分享一下Android开发 项目中,有关于数据的存储的内容。

    一 用户偏好设置 

          用户偏好设置保存的数据较少,格式呢也较为简单。一般存储类似于配置信息格式的数据,是简单类型的key-value值存储,例如是否第一次登陆,是否打开音效之类信息。

          用户偏好设置呢,有三种级别,区别在于:对象的得到方式不同,相应的控制域也不同,下面依次跟大家介绍:


         1.用户级别的

SharedPreferences preferences=getSharedPreferences("fileName", MODE_PRIVATE);

            以上代码得到的用户偏好设置的数据,会保存在一个名字叫做fileName.xml 的文件中。


          2.界面级别的

SharedPreferences preferences=getPreferences(MODE_PRIVATE);
             以上代码得到的用户偏好设置的数据,保存的文件名,是以当前的Activity的名字为名的。


          3.全局系统级别的

SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(context);
             以上代码得到的用户偏好设置的数据,保存的文件名,是以当前程序所在的包名为名的。


       ps.说一下文件的几种MODE格式意义

             MODE_APPEND 可追加的

             MODE_ENABLE_WRITE_AHEAD_LOGGING 启动之前写出日志

             MODE_MULTI_PROCESS 解决数据一致性问题,解决于多任务问题

             MODE_PRIVATE 私有的,仅允许本程序的读写操作

             MODE_WORLD_READABLE 允许其它程序的读出操作

             MODE_WORLD_WRITEABLE  允许其它程序的写入操作

 

      在得到SharedPrefrences对象之后,通过其对象.edit() 方法得到Editor对象,然后调用其  clear  put  remove commit  等方法进行数据的提交操作

  ***   读数据,直接用 SharedPrefrences对象 的 getString("名称",无返回值时的默认值);

  ***   存入数据,调用 edit.putString("名称",值);

           一定记得调用edit.commit();  方法,将写入的值进行提交,否则会功亏一篑的。。。


    二 文件存储

         文件存储呢,根据程序运行对该文件存储内容的依赖性和信息数据的安全性,将文件存储分为内部存储和外部存储

         1.内部存储(对手机上存储的文件进行读写)

             利用Context提供的方法     openFileInput(文件名)    openFileOutput(文件名,Mode)      利用前两个方法,直接得到输入输出流,从而进行对文件的读写

         2.外部存储 (对手机外置内存卡上的文件进行读写)

             首先,提供权限(读写删改外部储存设备文件的权限)

             其次, 通过文件的输入输出流对文件进行操作


     三 SQLite 数据库 (轻量级的一个数据库,可以看作是一个文件)

           得到数据库对象,有两种方法

           1.SQLiteDatabase的静态方法打开或者创建数据库,使用数据库对象的execSQL()方法,对数据库进行操作(推荐使用方法二,故方法一不做详解)

           2.使用SQLiteOpenHelper类,来得到数据库对象,具体代码如下

               SQLiteOpenHelper类的创建

        

package cn.xianxian.simplesqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBOpenHelp extends SQLiteOpenHelper {

	public DBOpenHelp(Context context) {

//构造方法,第二个参数(Xianxian)数据库的名字,最后一个参数(1)版本号
		super(context, "Xianxian", null, 1);
			}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// 每次得到数据库对象的时候直接创建表
		String sql="create table Student_info(id integer primary key,name varchar(12))";
		db.execSQL(sql);
		
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// 数据库更新时发生的事件
		
	}

}

  得到数据库对象

      

package cn.xianxian.simplesqlite;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

//得到数据库对象

	SQLiteDatabase db=new DBOpenHelp(this).getReadableDatabase();

//添加一条数据进入数据库
	ContentValues values=new ContentValues();
	values.put("id", 1);
	values.put("name","xian");
	db.insert("Student_info", null, values);

	}	

}


    四 使用网络存储数据(具体的我就不多说了,就是云端存储,以后会专门对这方面的内容进行详细的讲解)



    啦啦,2015年的最后一天了呢,想想还是有一点点激动的说,嘿嘿~拍拍小娴娴,今年的表现还是不错的,学习的很认真,实习也找到了,好好表扬表扬哟~

    2016呢,送给自己的话: 认真的过每一天,去努力,去学习。永远记得,你是怎样的,你的世界就是怎样的,小娴娴,加油加油~

             

             


            


          

实验报告封面 课程名称: Android平台开发与应用 课程代码: SM3004 任课老师: 梁郁君 实验指导老师: 梁郁君 实验报告名称:实验10 Android数据存储与IO 学生姓名: 学号: 教学班: 递交日期: 签收人: 我申明,本报告内的实验已按要求完成,报告完全是由我个人完成,并没有抄袭行 为。我已经保留了这份实验报告的副本。 申明人(签名): 实验报告评语与评分: 评阅老师签名: 一、实验名称:Android数据存储与IO 二、实验日期:2014/11/13 三、实验目的: 1、掌握SharedPreferences存储数据的格式及位置,能够读写其他应用程序的Shared Preferences。 2、File存储数据 3、掌握SQLite存储数据方法。 4、会使用SQLiteOpenHelper辅助类,进行操作数据库。 四、实验用的仪器和材料: PC+Eclipse+ADT 五、实验的步骤和方法: 1、读写其他应用程序SharedPreferences。 读写其他应用程序的SharedPreferences,步骤如下: 创建应用App1 和应用App2,App2尝试读取App1的SharedPreferences内容 在App2 需要创建App1对应的Context。 调用App1的Context的getSharedPreferences(String name,int mode) 即可获取相应的SharedPreferences对象。 如果需要向App1的SharedPreferences数据写入数据,调用SharedPreferences的e dit()方法获取相应的Editor即可。 根据上述说明和下面截图,以及代码注释,完成相关代码片段填空,并思考问题: SharedPreferences何时会丢失? 图1 App1运行的界面 图2 App2 运行结果 App1:记录应用程序的使用次数,/com.Test/UseCount.java程序如下,补充程序中所缺 代码: "import android.app.Activity; " "import android.content.SharedPreferences; " "import android.content.SharedPreferences.Editor; " "import android.os.Bundle; " "import android.widget.Toast; " "public class UseCount extends Activity{ " "SharedPreferences preferences; " "@Override " "public void onCreate(Bundle savedInstanceState){ " "super.onCreate(savedInstanceState); " "setContentView(R.layout.main); " "preferences = getSharedPreferences("count", MODE_WORLD_READABLE); " "//读取SharedPreferences里的count数据 " "int count = ("count" , 0); " "//显示程序以前使用的次数 " "Toast.makeText(this , "程序以前被使用了" + count + "次。", " "10000).show(); " "Editor editor = ; " "//存入数据 " "editor.putInt("count" , ++count); " "//提交修改 " "editor. ; " "} " "} " App2:ReadOtherPreferences.java代码如下,补充程序所缺代码: "import android.app.Activity; " "import android.content.Context; " "import android.content.SharedPreferences; " "import " "android.content.pm.PackageManager.NameNotFoundException; " "import android.os.Bundle; " "import android.widget.TextView; " "public class ReadOtherPreferences extends Activity{ " "Context useCount; " "@Override " "public void onCreate(Bundle sav
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值