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。

  • 相关阅读:
    简单的模板解析函数
    HTML通过事件传递参数到js 二 event
    HTML通过事件传递参数到js一
    通过this获取当前点击选项相关数据
    LeetCode 20. 有效的括号(Valid Parentheses)
    LeetCode 459. 重复的子字符串(Repeated Substring Pattern)
    LeetCode 14. 最长公共前缀(Longest Common Prefix)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
    LeetCode 665. 非递减数列(Non-decreasing Array)
  • 原文地址:https://www.cnblogs.com/xingkai/p/5106425.html
Copyright © 2011-2022 走看看