Android 数据存储技术

Android 数据存储包括三种:文件存储、SharedPreferences存储、数据库存储(SQLite)。

  • 文件存储

       1.特点适合用于存储一些简单的文本数据或二进制数据。

       2.存储路径/data/data/<应用程序包名>/files

       3.使用方法:

            FileInputStream openFileInput(String name);  读取文件

           FileOutputStream openFileOutput(String name , int mode) 写入文件

       4.文件操作模式:

                     MODE_PRIVATE:为默认操作模式,文件为私有数据。

                     MODE_APPEND:检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

                     MODE_WORLD_READABLE:全局读

                     MODE_WORLD_WRITEABLE:全局写

  • SharedPreferences存储

        1.存储路径:

                  /data/data/<应用程序包名>/shared_prefs

         2.SharedPreferences存储的特点:

                   (1) sharedPerferences是一种轻量级的存储方式。
                   (2) 
只支持JAVA基本数据类型,不支持自定义的数据类型。
                   (3) 
应用内数据可以共享。
                   (4) 
使用简单,方便。

                   (5) 对少量数据进行存储(配置信息)使用键值对存储key-value

          3.SharedPreferences的使用:

                 • 获取SharedPreferences 对象

                        getSharedPreferences(String  name , int mode)

                        Name:存储的文件名

                        Mode:访问模式,设置SharedPreferences对象权限

     例子: SharedPreferences prefs = getSharedPreferences("fileName", Context.MODE_PRIVATE);

                  • 三种访问模式

                      应用私有(MODE_PRIVATE(目前只用这一种)

                      全局读(MODE_WORLD_READABLE Android 4.2中弃用)

                      全局写(MODE_WORLD_WRITEABLE Android 4.2中弃用)

      • 读取SharedPreferences文件存储的数据:

                        通过SharedPreferences对象的键key,获取相应key键值。

常用方法: getString(key,value)getBoolean(key,value)getInt(key,value)getFloat(key,value)getLong(key,value)

                       value 默认返回值

                      eg:

                                SharedPreferences prefs = getSharedPreferences("file", Context.MODE_PRIVATE);     

                                String name = prefs.getString("name", null);     

                                int age = prefs.getInt("age", 0);

             • SharedPreferences文件存储数据

                                edit().putString(“string”,value)edit().putBoolean (“string”,value)、 edit().putInt (“string”,value)

            •  提交数据: commit() & apply()

                                (1) commit方法有boolean的返回值,apply没有返回值,无法知道存储是否失败

                                (2)  apply异步提交, commit提交是同步过程,效率更慢。

                                (3) 在不关心提交结果是否成功的情况下,优先考虑apply方法。

            •  其他方法:

                       prefs.edit().remove(key).commit();  //移除某个key

                       prefs.edit().clear().commit(); //清楚所有数据

                       prefs.contains(key);  //查询某个key是否存在,返回boolean

                        prefs.getAll();   //返回所有的键值对返回一个Map<Sting,?>

  • 数据库存储(SQLite)

         1.  特点:

                   安卓自带,轻量级、速度快、占用资源少

          2.存储路径:

                   /data/data/<应用程序包名>/databases

          3. 主要类

                   SQLiteOpenHelper 抽象类,用于数据库的创建和升级

                                 必须实现的抽象方法:onCreate() onUpgrade()

                  SQLiteDatabase 数据库操作类,用于数据增删改成操作

                                    insert() delete() update() query()

         4.SQLite 的使用:

                  •  创建数据库帮助类DatabaseHelper继承SQLiteOpenHelper

 public DatabaseHelper(Context context, String name, CursorFactory factory,   int version)//带全部参数的构造函数context, 数据库名字,null,版本号

 {

        super(context, name, factory, version);

}

@Override

public void onCreate(SQLiteDatabase db) {

        //创建数据库sql语句 并 执行

        String sql = "create table user(name varchar(20))";

        db.execSQL(sql);

    }

@Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

      db.execSQL("drop table if exists user");

      onCreate(db);

}

                •  获取数据库的操作对象,同时创建数据库:

DatabaseHelper mDatabase = new DatabaseHelper(getContext(), "usersDataBase.db",null,1);

SQLiteDatabase db= mDatabase .getWritableDatabase() (读写)

SQLiteDatabase db= mDatabase .getReadableDatabase() (只读)

                 • SQLite 数据操作增删改查

方法一、使用 insert() delete() update() query()方法:

Ø 插入:

         db.insert(tableName,null,value)

Ø 删除:

         db.delete(tableName,selection, selectionArgs); 表名,条件,条件值

Ø 修改更新:

          db.update(tableName, values, selection, selectionArgs);

Ø 查找:

          Cursor cursor = db.query(String table, String[] columns, String selection, String[] selectionArgs,String groupBy, String having,String orderBy)

             Cursor类常用方法:

         

方法二、db.execSQL(sql)

              •   SQL 常用语句:

                           sql = create table 数据表 (字段1 类型1(长度),字段2 类型2(长度) …… )

                            sql = "select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

                            sql = "select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]”

                            sql = "delete from 数据表 where 条件表达式

                            sql = "update 数据表 set 字段名=字段值 where 条件表达式

                            sql = "insert into 数据表 (字段1,字段2,字段3 …) values (1,2,3 …)”

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值