安卓数据存储五种方式

安卓数据存储五种方式

数据存储:

五种:

 Shared Preferences 参数共享

 Internal Storage   内部存储

 External Storage   外部存储 (sdcard)

 SQLite Databases   数据库存储

 Network Connection 网络存储



 1、Shared Preferences 参数共享

    应用场景:应用程序有少量的数据需要保持(保持设置的参数)

    文件保持位置:/data/data/包名/shared_prefs/xxx.xml

    文件格式:xml



   保持数据:

     //参数是操作模式,0代表着私有的MODE_PRIVATE。

   SharedPreferences sp = getPreferences(MODE_PRIVATE);

   Editor edit = sp.edit();//获取一个编辑器

   edit.putBoolean("boolean", true);

   edit.putString("key", "sadfsdf");

   edit.putInt("int", 123);

   edit.commit();//提交修改

 读取数据:

   SharedPreferences sp = getPreferences(MODE_PRIVATE);

   boolean boolean1 = sp.getBoolean("boolean", false);

   int int1 = sp.getInt("int", 0);

   String string = sp.getString("key", "");

   它的操作模式一般都是MODE_PRIVATE;

   SharedPreferences sp = getSharedPreferences("yinan", MODE_PRIVATE);

2、internalstorage 内部存储


  文件保持的位置:/data/data/包名/files/xxx.xxx

  文件格式:自定义


  保持数据:

    fos = openFileOutput("yinan.txt", MODE_APPEND);

  String str = "uiouioasdffkmgh";

  fos.write(str.getBytes());

读取数据:

fis = openFileInput("yinan.txt");

 操作(读写)模式:

 MODE_PRIVATE 当前应用才有权限读写。数据会覆盖。

 MODE_APPEND 当前应用才有权限读写。数据可追加

 MODE_WORLD_READABLE  其他应用可读。

 MODE_WORLD_WRITEABLE 其他应用可写

 读取其他应用的数据:

  fis = new FileInputStream("data/data/com.example.ex00_android/files/yinan.txt");

  是否能读取的到时有文件的读取模式决定的。

3、External Storage   外部存储


  sdcard的读写;


   //  "/mnt/sdcard"

//获取sdcard路径

   File filename =

Environment.getExternalStorageDirectory();

   //sdcard的状态

   if(Environment.getExternalStorageState()

.equals(Environment.MEDIA_MOUNTED))

   {

//判断sdcard的空间是否足够

long freeSpace = filename.getFreeSpace();

   }

   else

   {

   }




4、 SQLite Databases   数据库存储


  android平台上,集成了一个嵌入式关系型数据库--SQLite


  免费的

  轻量级

  多线程

  跨平台


  SQLite 可以解析大部分标准的SQL语句:


  创建表:

  CREATE TABLE 表名(id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(20))

  例:CREATE TABLE student (studentid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(50),phone VARCHAR(20))


  删除表:

  DROP TABLE 表名

  例:DROP TABLE student


  更新表:

  ALTER TABLE 表名 ADD 字段名 属性

  例:"ALTER TABLE student ADD COLUMN age INTEGER"


  查询语句:

  select *  from 表名 where 条件语句 group by 分组语句 having 分组条件  order by 排序语句

  例:SELECT phone, name FROM student ORDER BY name DESC


  插入语句

  insert into 表名(字段名) values (值)

  例:INSERT INTO student (name, phone) VALUES(“test”, “13666666666”)


  更新语句

  updata 表名 set 字段名 = 值 where 条件语句

  例:UPDATE student SET phone=1399999999 WHERE name=“test”


  删除语句:

  delete from 表名 where 条件语句

  例:DELETE FROM student WHERE name=“test”



  SQLiteOpenHelper


  步骤:

  1、创建一个类继承SQLiteOpenHelper

  2、需要一个构造方法;

      参数可以自己选择(但是super里面参数必须要有)

      public MySQLiteHelper(Context context,int version)

      {

      super(context, "yinan.db", null, version);

    }

  调用:在activity的合适的时机(一般就是在onCreate()方法)  

  MySQLiteHelper mHelper = new MySQLiteHelper(this, 1);

SQLiteDatabase mDB = mHelper.getWritableDatabase();//只要调用getWritableDatabase跟getReadableDatabase方法就可以获得数据库

注意:

当我们创建MySQLiteHelper对象的时候:

 a、数据库不存在的时候就自动创建数据库,并且调用MySQLiteHelper类里面的onCreate();

    所以我们就可以在onCreate执行创建表语句

 b、如果数据库已经存在了就不会再调用onCreate

 c、如果数据库存在,但是版本号不一样的话就会调用onUpgrade()方法(更新表)


你可能感兴趣的:(安卓,数据,数据存储)