您的位置:首页 > 移动开发 > Android开发

Android的数据存储

2015-12-31 11:34 357 查看
    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呢,送给自己的话: 认真的过每一天,去努力,去学习。永远记得,你是怎样的,你的世界就是怎样的,小娴娴,加油加油~

             

             

            

          
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息