数据存储方案:持久化技术

文件存储
1 Context类提供了一个openFileOutput()方法,用于将数据存储到指定的文件中,该方法返回看看一个FileOutputStream对象,
通过FileOutputStream对象构建一个OutputStreamWriter对象,再根据OutputStreamWriter对象构建一个BufferedWriter对象,根据BufferedWriter的write()方法的参数保存数据

2 Context提供了一个openFileInput()方法,用于从文件中读取数据,该方法返回一个FileInputStream对象,通过FileInputStream对象构建一个InputStreamReader对象,再根据InputStreamReader对象构建一个BufferedReader对象,根据BufferedReader对象的readLine()方法进行一行一行的读取,再StringBuilder对象拼接字符,即可获取文件中保存的数据
edit.setSelection(int i)方法将输入光标移动到i长度的位置
TextUtils.isEmpty()方法,可以一次性进行两种空值的判断(null和空字符串)

SharedPreferences存储
1 SharedPreferences是使用键值对的方式来存储数据的
2 获取SharedPreferences对象:

    1 Context类提供的getSharedPreferences()方法,该方法接受两个参数,第一个用于指定SharedPreferences文件的名称,若不存在则会创建一个,第二个参数用于指定操作模式:MODE_PRIVATE,该种模式和直接传入0效果相同
    2 Activity类中的getPreferences()方法,只接受一个参数即MODE_PRIVATE,因为使用该方法是会自动将当前活动的类名作为SharedPreferences的文件名
    3 PreferenceManager类中的getDefaultSharedPreferences()方法,是个静态方法,接受一个Context参数

3 向SharedPreferences中存储数据

    1 调用SharedPreferences对象的edit()方法获取一个SharedPreferences.Editor对象
    2 向SharedPreferences.Editor对象中添加数据,如putBoolean(),putString()等
    3 SharedPreferences.Editor对象调用applay()方法提交数据

4 从SharePreferences中读取数据:SharePreferences对象提供了一系列get方法,用于对存储的数据进行读取

SQLite数据库存储

1 SQLite是一款轻量级的关系型数据库,借助SQLiteOpenHelper(抽象类)帮助类可以非常简单的对数据库进行创建和升级。

2 SQLiteOpenHelper有两个抽象方法:onCreate()和onUpgrade();还有两个非常重要的实例方法:getReadableDatabase()和getWritableDatabase(),两个方法都可以创建或打开一个现有的数据库(有就直接打开,无则创建),返回一个对数据库进行读写操作的对象

3 创建一个数据库帮助类MySQLiteOpenHelper,使其继承自抽象的SQLiteOpenHelper

    1 首先把建表语句定义成一个字符串常量,特别注意该语句的语法,很容易语法错误
    2 重写带4个参数的构造方法:第一个为Context;第二个为String,表示数据库名;第三个是Cursor,一般传入null;第四个是版本号
    3 重写父类的两个抽象方法:onCreate()与onUpgrade(),在哦那Create()方法中调用数据库的execSQL()方法创建表,该方法传入的是建表语句的的字符串常量
    4 当在活动中new MySQLiteOpenHelper()时,传入对应参数,即可在创建数据库的同时创建表
    5 在onUpgrade()中对数据库进行升级:比如需要再添加一张表时,定义建表语句为一个字符串常量,然后在onUpgrade()方法中,利用该方法提供的参数调用execSQL()方法删除原来的表,再调用onCreate()重新创建,最后在活动中new 数据库实例时,将最后的参数改为比之前大的数即可
    6 活动中得到数据库的实例后,通过实例调用getReadableDatabase()或getWritableDatabase()方法,则返回一个对数据库进行读写的对象(SQLiteDatabase的一个实例)

4 获取到SQLiteDatabase对象后,使用ContentValues的put
()方法,来对要添加的数据进行组装,然后SQLiteDatabase对象调用insert()方法出入数据,接受3参数;调用update()方法更新数据,接受4个参数;调用delete()删除数据,接受3个参数;调用query()方法用于对数据的查询,该方法参数很多,最短对的重载方法也有7个参数,query()返回一个Cursor对象,查询到的数据都将从该对象中取出

5 LitePal开源框架的使用

    1 添加远程库:compile 'org.litepal.android:core:版本号'

    2 配置litepal.xml文件:在app/src/main目录下,New--Directory,创建一个assets目录,在该目录下再新建一个litepal.xml文件,Book和Category是模型类,即Java bean,如下:

    <?xml version="1.0" encoding="utf-8"?>
<litepal>
    <dbname value="BookStore" ></dbname>
    <version value="2" ></version>
    <list>
        <mapping class="com.example.litepaltest.Book"></mapping>
        <mapping class="com.example.litepaltest.Category"></mapping>
    </list>

    3 配置Li特P阿里Application,在AndroidManifest.xml中的application下添加:
    android:name="org.litepal.LitePalApplication"
    4 用Connector.getDatabase()创建数据库
    5 升级数据时,将版本号加1即可
    6 让模型类(本例中Book,Category)继承自DataSupport,利用模型类的实例的set系列方法添加相应数据,最后用模型类的实例调用save(),即添加数据成功,save()方法是从继承的DataSupport类而来的;调用updateAll()进行更新数据;调用setToDefault()方法将数据更新成默认值;调用deleteAll()删除数据;DataSupport.findAll(Book.class),查询Book表中的所有数据,返回一个List<Book>集合
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值