android数据存储

android提供了三种数据存储方式
1.文件存储
首先,Context类中提供了一个openFileOutput()方法可以,将数据存储到指定的文件中,openFIleOutput接受两个参数,一个是文件名,另一个是操作模式
(1)MODE_PRIVATE 默认模式,会覆盖原文件
(2)MODE_APPEND 追加模式,不覆盖

protected void onDestory(){
    super.onDestory();
    String inputText = edit.getText().toString();
    save(inputText);
}
public void save(String inputText){
    FileOutputStream out = null;
    BufferedWriter writer = null;
    try{
        out = openFileOutput("data",Context.MODE_PRIVATE);
        writer = new BufferedWriter(new OutputStreamWriter(out));
        writer.write(inputText);
    }catch(IOException e){
        e.printStackTrace();
    }finally{
        try{
            if(writer!=null){
            writer.close();
            }
        }catch(IOException e){
            e.printStackTrace();
        }

    }
}

写在onDestory里是防止写完按了返回键就没有了,这样子可以保证一定会存进去,open FileOutput返回的是FileOutputStream对象
1.2读问文件

public String load(){
    FileInputStream in = null;
    BufferedReader reader = null;
    StringBuilder content = new StringBuilder();
    try{
        in = openFileInput("data");
        reader = new BufferedReader(new InputStreamReader(in));
        String line = "";
        while((line=reader.readLine())!=null){
            content.append(line);
        }
    }catch(IOException e){
        e.printStackTrace();
    }finally{
        if(reader!=null){
            try{
                reader.close();
            }catch(IOException e){
                e.printStackTrace();
            }   
        }
    }
    return content.toString();
}

读取和写入大同小异,一个是openFileOutput 一个是openFileInput,然后后续操作类似,一些小技巧是,TextUtils.isEmpty()这个方法null和空字符串他都会返回true,以及setSelection()方法将edittext光标移动到末尾。

2.SharedPreferences

一般用来存入键值对
这里写图片描述

SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",28);
editor.apply();

2.2读取数据

SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name","");

只需要使用get即可,第一个参数是键,第二个是找不到时的默认返回值

3.数据库
这里写图片描述

这里写图片描述
当你想要修改数据库,比如你要新增一张表,或者原来的表里面多加一列,那么就需要重写onUpgrade方法

db.execSQL("drop table if exists BOOK");
onCreate(db);

同时还需要更新版本号
这里写图片描述
添加数据,使用ConteneValues来添加

SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name","THE DA VINCI CODE");
db.insert("Book",null,values);

更新数据,一样可以使用ContentValues

SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("price",10.99);
db.update("Book",values,"name=?",new String[]{"The Da Vinci Code"});

这里写图片描述

删除数据

SQLiteDatabse db = dbHelper.getWritableDataBase();
db.delete("Book","pages>?",new String[]{"500"});

这里写图片描述

查询数据
这里写图片描述

Cursor cursor = db.Helper.getWritableDatabase();
if(cursor.moveToFirst()){
    do{
        String name = cursor.getString(cursor.getColumnIndex("name"));
    }while(cursor.moveTonext());

}
cursor.close();

开源的关系,有很多好用的开源库,比如LitePal就是一个很好的数据库操作库
这里写图片描述

这里写图片描述

这个库其实就是创建一个Java Bean,也就是一个类,类名表示表名,里面的变量表示列名,一堆get/set方法。
这里写图片描述

然后使用Connector.getDatabase();就可以得到数据库了。就算后面更新也是一样的方法

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值