在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提供的文件操作方法。此类操作的所有文件路径只能是"\data\data\<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。

Android 之 数据存储的更多相关文章

  1. Android中数据存储(一)

    国庆没有给国家添堵,没有勾搭妹子,乖乖的写着自己的博客..... 本文将为大家介绍Android中数据存储的五种方式,数据存储可是非常重要的知识哦. 一,文件存储数据 ①在ROM存储数据 关于在ROM ...

  2. Android本地数据存储复习

    Android本地数据存储复习 Android无论是应用层还是系统层都需要在本地保存一些数据,尤其在应用层中使用的就更为普遍,大体有这么几种:SharedPreference,file,sqlite数 ...

  3. android学习笔记45——android的数据存储和IO

    android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...

  4. Android实现数据存储技术

    转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...

  5. android中数据存储

    android中数据存储     Android 中存储数据的方式有五种:SQLite数据库.文件存储.内容提供者.网络.SharedPreferences(Key----value)五种存储方式. ...

  6. Android中数据存储(四)——ContentProvider存储数据

    目录(?)[+]   当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方 ...

  7. Android中数据存储(三)——SQLite数据库存储数据

    当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方式: 1. Share ...

  8. 关于Android开发数据存储的方式(一)

    关于Android开发数据存储方式(一) 在厦门做Android开发也有两个月了,快情人节了.我还在弄代码. 在微信平台上开发自己的APP,用到了数据存储的知识,如今总结一下: 整体的来讲.数据存储方 ...

  9. Android本地数据存储: ASimpleCache

    一:前言 在上一篇博客Android本地数据存储: Reservoir 博客中,我提到,除了Reservoir库,还可以采用ASimpleCache开源库,来实现本地数据存储.昨天并没有仔细的对比Re ...

  10. Android之数据存储的五种方法

    1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...

随机推荐

  1. 工作流学习——Activiti流程变量五步曲 (zhuan)

    http://blog.csdn.net/zwk626542417/article/details/46648139 ***************************************** ...

  2. OpenGL的GLUT注册回调函数[转]

    OpenGL的注册回调函数 void glutDisplayFunc(void (*func)(void) ); 为当前窗口设置显示回调函数 void glutOverlayDisplayFunc(v ...

  3. Linux下的split 命令(将一个大文件根据行数平均分成若干个小文件)

    将一个大文件分成若干个小文件方法 例如将一个BLM.txt文件分成前缀为 BLM_ 的1000个小文件,后缀为系数形式,且后缀为4位数字形式 先利用 wc -l BLM.txt       读出 BL ...

  4. 解决SQL命令行回退的问题

    场景 在linux或者aix上安装后Oracle后,在SQL命令行下无法通过键盘的退格键回退,如下 解决方法 安装软件 # rpm -ivh rlwrap-0.41-1.el6.x86_64.rpm ...

  5. js boolean 判断

    在写项目的时候出现了一个这样的问题,虽然问题解决了,但是还是有点疑问. 在数据库中设计的表的一个字段为是否审核(is_vaild) 类型 tinyint(1) 对应的在 java中就是布尔类型(boo ...

  6. foundation系列

    1如何将布尔值转为OC对象?  1把 BOOL 值包装到 NSNumber中: NSNumber *boolNumber = [NSNumber numberWithBool:YES]  2获取BOO ...

  7. Hbase之删除数据

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...

  8. Ajax中eval的使用详解

    定义和用法 Eval它是用来计算某个字符串,并且执行其中的JavaScript代码. 语法 1) eval函数接受一个string这个参数,并且这个参数是必须的,这个参数就是要计算的这个字符串.它里面 ...

  9. SAP标准价格修改

    标准MR21修改前期的价格,不会影响到当期. 相关配置 事务码OMRN. 如企业账期已经开到 2015 年 2 月,会计账期还可对 1月记账,配置后可修改1月物料价格.

  10. 【软件使用】TortoiseSVN版本管理软件使用简单说明

    TortoiseSVN版本管理软件使用简单说明 很多时候在写一个小的项目不想使用github等工具,只想简单在本地搭建一个版本管理器.那么TortoiseSVN就非常适合. 第一步:下载Tortois ...