zoukankan      html  css  js  c++  java
  • Android 之 数据存储

      在Android操作系统中,提供了5种数据存储方式:SharedPreferences存储,文件存储,SQLite数据库存储,ContentProvider存储和网络存储。

      一、SharedPreferences

      用于保存配置信息。所有的信息都是按照"key=value"的形式进行保存,只能保存基本数据类型的信息,如:字符串、整形、布尔型等。

      注意:在使用SharedPreferences存储数据时,不需要指定文件后缀,后缀自动设置为.xml。

      

      SharedPreferences  preferences  =  getSharedPreferences(fileName,mode);

      preferences.getXXX(.......); //直接读取数据

      

      //需要写入数据

      Editor editor = preferences.edit();

      editor.putXXX(....);

      editor.commit(); //提交

      二、文件存储

      SharedPreferences只能存储一些简单数据类型的数据,可以通过文件存储来弥补SharedPreferences存储的不足。

      对于文件的存储操作,在Android中有两种形式:

      1.直接利用Activity提供的文件操作方法。此类操作的所有文件路径只能是"datadata<package_name>files文件名称"。

      

      

      2.利用Java IO流执行操作。此类操作的文件可以是任意路径(包括sdcard)下,但是要为其操作授权。

        写文件通常使用 处理流PrintStream+节点流FileOutputStream

        读文件通常使用 Scanner+节点流FileInputStream

        这种情况下,主要是向sdcard中写入信息。(请参考"android 之 sdcard操作")

      3.操作资源文件

      这里说的资源文件,是指res目录下的资源文件,这些资源文件的id会在R.java文件中。

      读取这些资源文件,需要android.content.res.Resources类,通过Context实例的getResources()方法获取。

      注意:txt文件要放在raw文件夹下。

      

       

      三、SQLite数据库

      在Android系统中,进行SQLite数据库操作,主要涉及以下类和接口:

      

      SQLiteDatabase类实例代表了一个SQLite数据库对象以及相关的数据库操作。

      在实际开发中,一般不用创建SQLiteDatabase对象,而是使用辅助类SQLiteOpenHelper。

      SQLiteOpenHelper是一个抽象类,实际开发时,需要继承该类,并实现其中的相关方法,如下所示:

      

      

      

      总结:使用SQLite数据库,步骤如下:

      1.创建SQLiteOpenHelper子类,并实现其中的抽象方法,在onCreate方法中,主要完成数据库初始化的建表工作。

      2.通过创建SQLiteOpenHelper子类的实例,获取数据库对象(通过getReadableDatabase()或getWriteableDatabase())

      3.通过数据库对象实例,执行数据库操作,主要是execSQL()和rawQuery()两个方法。

      4.如果多次访问数据,要使用事务

        db.beginTransaction();  //开始事务

        db.setTransactionSuccessful(); //提交更新或回滚事务

        db.endTransaction(); //结束事务

      5.关闭数据库

        close();   //很重要

      在Android中,使用android.database.Cursor类来封装查询的结果集。使用db.rawQuery()返回一个Cursor对象。

      Cursor对象中,列的下标从0开始。

      

      

      四、ContentProvider

      ContentProvider类的作用是不同应用程序之间进行数据交换。

      

      ContentProvider操作数据时,采用Uri的形式进行数据交换。

      

      

      在实际应用中,Android系统提供了许多ContentProvider,这些ContentProvider在android.provider包中有说明。

      ContentProvider是数据的提供接口,在实际使用时,需要通过ContentResolver来访问ContentProvider提供的数据。

      通过Context对象实例的getContentResolver()来获取ContentResolver。

  • 相关阅读:
    UCOS内核
    ##API(七)————日期操作类(二)
    ##Webstrom打开显示老长一段英文This lincense GY4D6P7914 has been cancelled.,就是打不开怎么解决
    ##API(六)————日期操作类(一)
    ##API(五)————StringBuffer类和StringBuilder类(重要)
    ##API(四)————String类的常用方法
    ##API(三)————Math类
    ##API(二)————包装类
    ##API的简介
    ##API(一)————枚举
  • 原文地址:https://www.cnblogs.com/xingkai/p/5106425.html
Copyright © 2011-2022 走看看