(第一行代码)笔记(四)

数据存储全方案


持久化技术简介
Android系统中主要提供了三种方式用于简单的实现数据持久化功能

  1. 文件存储
  2. SharedPreference存储
  3. 数据库存储

1.文件存储
将数据存储到文件中

Context类下有openFileOutput方法,将数据存储到指定文件中,第一个参数指定文件名,不可以包含路径,所有的文件都是默认存储到/data/data/<package name>/files/目录。第二个参数是文件操作模式,MODE_PRIVATEMODE_APPEND

openFileOutput方法返回一个FileOutputStream对象。

String data = "Data to save";
FileOutputStream out = null;
BufferedWriter writer = null;
try{
    out = openFileOutput("data", Context.MODE_PRIVATE);
    writer = new BufferedWriter(new OutputStreamWriter(out));
    writer.write(data);
}catch(IOException e){
    e.printStackTrace();
}finally{
   try{
    if(writer != null){
        writer.close();
    }
   }catch(IOException e){
       e.printStackTrace();
   }
}

2.SharedPreferences存储
键值对存储

三种方法获取SharedPreferences对象
1.Context类中的getSharedPreferences()方法,两个参数,第一个指定文件名,SharedPreferences文件都是存放在/data/data/<package name>/shared_prefs/目录下的。第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATEMODE_MULTI_PROCESSMODE_PRIVATE 仍然是默认的操作模式,和直接传入 0 效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。MODE_MULTI_PROCESS则一般是用于会有多个线程中对同一个SharedPreferences文件进行读写的情况。
2.Activity类中的getPreferences() 方法类名作为SharedPreferences的文件名
3.PreferenceManager类中的getDefaultSharedPreferences() 方法它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。

存数据三步
1.调用SharedPreferences对象的edit() 方法来获取一个SharedPreferences.Editor对象。
2.向SharedPreferences.Editor对象中添加数据,比如添加一个布尔型数据就使用putBoolean 方法,添加一个字符串则使用putString() 方法,以此类推。
3.调用commit()方法将添加的数据提交,从而完成数据存储操作。

从SharedPreferences读数据getXXX方法,通过键值。

3.SQLite数据库存储

SQLiteOpenHelper抽象类,onCreateonUpgrade两个方法必须在子类中重写。在这两个方法中实现 创建升级 数据库的逻辑。

geReadableDatabase
getWritableDatabase

创建或打开一个数据库,并返回一个可对数据库进行读写的对象,磁盘空间已满则,read方法返回只读,write出现异常。

SQLiteOpenHelper中有两个构造方法可供重写,一般使用参数少一点的那个构造方法即可。这个构造方法中接收四个参数:第一个参数是Context。必须要有它才能对数据库进行操作;第二个参数是数据库名,创建数据库时使用的就是这里指定的名称;第三个参数允许我们在查询数据的时候返回一个自定义的Cursor,一般都是传null;第四个参数表示当前数据库的版本号,可用于对数据库进行升级操作,构建出SQLiteOpenHelper的实例之后,再调用它的getReadableDatabase()getWritableDatabase() 方法就能够创建数据库了,数据库文件会存放在/data/data/<package name>/databases/ 目录下。

SQLite中的数据类型

  • integer 表示整型
  • real 表示浮点型
  • text 表示文本类型
  • blob 表示二进制类型
通过adb检查数据库和表的情况
adb shell
cd 命令进入到/data/data/<package name>/databased/目录下,
并使用
ls 命令查看到该目录里的文件
sqlite3 数据库名
.table  查看表
.schema 查看建表语句
.exit   或   quit    退出数据库的编辑。

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

版本号大于1。onUpgrade方法就会执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值