Android读书笔记(七)

将数据存储到文件中

Context有方法openFileOutput将数据存储到文件中,openFileOutput指定两个参数,第一个参数是文件名,第二个参数是模式。文件默认存储在/data/data/<packagename>/files下,模式有两种,一种是MODE_PRIVATE,相同文件名会覆盖,一种是MODE_APPEND,相同文件名会追加内容。它返回的是一个人FileOutputStream对象,然后使用FileOutputStream构建出OutputStreamWriter对象,然后使用OutputStreamWriter构建出BufferedWriter, 从而完成writer操作。

从文件中读取数据

通过openFileInput方法获得输入流,根据输入流构建reader,通过reader构建出String返回

        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();
                }
            }
        }
通过SharedPreference存储

SharedPreference是通过键值对的方式来存储的

SQLite

Android提供了一个抽象类SQLiteOpenHelper,需要实现两个抽象方法,onCreate和onUpdate。
SQLiteOpenHelper有两个重要的实例方法:getReadableDatabase和getWritableDatabase,在数据不可写的时候,getReadableDatabase将以只读方式打开,getWritableDatabase将抛出错误。SQLiteOpenHelper的构造函数,有四个参数,第一个context提供上下文,第二个是数据库的名称,第三个是自定义游标,第四个是数据库的版本号。当输入的版本号比原先大的时候就会先调用onUpgrade方法,然后再调用onCreate方法。这样就实现了升级数据库。

数据库添加数据

SQLiteDatabase对象提供了insert方法,需要传入3个参数,第一个参数指定要插入的表,第二个参数表示给可以为空的列赋值为null,第三个是一个ContentValue对,提供一系列put的重载。

    SQLiteDatabase db = dbHelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("name","The Da Vinci Code");
    values.put("author","Dan Brown");
    values.put("pages",454);
    values.put("price",16.96);
    db.insert("Book",null,values);
直接使用Sql语句

增删改都是用db.execSQL()
查询使用db.rawQuery()

使用LitePal

LitePal是一种开源框架,用于简化SQLite操作

第一步:引用依赖,在build.gradle中引用
compile 'org.litepal.android:core:1.3.2
第二步:配置litepal.xml文件
指定数据库名称和版本

<?xml version="1.0" encoding="UTF-8" ?>
<literpal>
    <dbname value="BookStore"></dbname>
    <version value="1"></version>
    
    <list>
    </list>
</literpal>

第三步:在androidmanifest.xml的application标签对中引入:
android:name="org.litepal.LitePalApplication"

第四步:定义一个实体类,把它映射到litepal.xml的映射模型列表中

第五步:在MainActivity中通过 Connector.getDatabase();得到数据库。

使用LitePal升级数据库

对数据库结构的改变,直接将版本号+1就可以了。

使用LitePal添加数据

实体类继承DataSupport,在活动中调用实体类的set方法,然后使用save方法就可以了。

使用LitePal更新数据

使用updateAll方法,找到要更新的语句,然后修改价格和出版商。如果updateAll方法中没有数据,那么就会对所有语句生效。

    Book book = new Book();
    book.setPrice(14.95);
    book.setPress("Anchor");
    book.updateAll("name = ? and author = ?","The Lost" +
            "Symbol","Dan Brown");
使用LitePal删除数据

第一种:使用的查询API查询出来的记录都能用delete直接删除。
第二种:使用delteAll()第一个参数指定要删除的记录所在的表,第二个参数指定条件,第三个参数指定具体的数值。DataSupport.deleteAll(Book.class,"price<?","15");

使用LitePal查询数据

查询表中的所有数据:List<Book> books= DataSupport.findAll(Book.class)
指定查询某几列的数据:List<Book> books = DataSupport.select("name","price").find(Books.class);
等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值