第七章 Android数据存储图文图文课件

合集下载

第07章Android中的数据存储3.

第07章Android中的数据存储3.

7.3.2 SQLITE数据库相关类
SQLiteOpenHelper是Android提供的管理数据的工具类,主要用于数据 库的创建、打开和版本更新。一般用法是创建SQLiteOpenHelper类的子类,
并扩展它的onCreate()和onUpgrade()方法(这两个方法是抽象的,必须扩
展),选择性的扩展它的onOpen()方法。 SQLiteDatabase getReadableDatabase():以读写的方式打开 SQLiteDatabase对象,内部调用getWritableDatabase()方法; SQLiteDatabase getWritableDatabase():以写的方式打开 SQLiteDatabase对象,一旦打开成功,将会缓存该数据库对象; abstract void onCreate(SQLiteDatabase db):当数据库第一次被 创建的时候调用该方法; abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion):当数据库需要更新的时候调用该方法;
由于SQLite允许存入数据时忽略底层数据列实际的数据类型,因 此SQLite在解析建表语句时,会忽略建表语句中跟在字段名后面的数 据类型信息。create table person_tb (id integer primary key autoincrement, name varchar(20)),因此在编写建表语句时可以省 略数据列后面的类型声明。
7.3.1 SQLITE数据库简介
SQLite最大的特点是可以把各种类型的数据保存到任何字段中 ,而不用关心字段声明的数据类型是什么。例如:可以把字符串类型 的值存入INTEGER类型字段中,或者在布尔型字段中存放数值类型等 。

Android数据存储培训课程PPT(62张)

Android数据存储培训课程PPT(62张)
@Override public void onClick(View v) {
// 存储数据到XML记录文件 SharedPreferences mySharedPreferences = getSharedPreferences(
MYPREFS, MODE_PRIVATE); // 获得修改所用的SharedPreferences对象 SharedPreferences.Editor editor = mySharedPreferences.edit();
MYPREFS, MODE_PRIVATE); String stringPreference; stringPreference = mySharedPreferences.getString(TEXT_KEY, ""); text.setText(stringPreference); }
});பைடு நூலகம்
SQLite数据库
• 嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不 需要管理。因为客户端和服务器在同一进程空间运行。SQLite 的数 据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据 库级锁定,没有网络服务器。它需要的内存,其它开销很小,适合用 于嵌入式设备。你需要做的仅仅是把它正确的编译到你的程序。
SQLite数据类型
• SQLite是无类型的,这意味着你可以保存任何类 型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么,对于SQLite来 说对字段不指定类型是完全有效的,如:
• Create Table ex1(a, b, c);
• SQLite允许忽略数据类型,但是仍然建议在你的 Create Table语句中指定数据类型, 因为数据类 型对于你和其他的程序员交流, 或者你准备换掉 你的数据库引擎。 SQLite支持常见的数据类型, 如:

第7章数据存储.ppt

第7章数据存储.ppt

第七章 Android数据存储
在对数据库进行完操作之后应有反馈消息提示。 记录日志数据库表结构:
数据库名:PocketBlog 数据表名:DiarysTb 表结构:
字段名 d_id d_title d_content d_face d_datetime d_uno
类型 integer varchar text int datetime varchar
实现。
Android应用开发教程
ContentProvider
ContentProvider 常见的接口:
第七章 Android数据存储
query(Uri uri,String[] projection,String selection, String[] selectionArgs, String sortOrder)
} …...
Android应用开发教程
ContentProvider
ContentProvider
第七章 Android数据存储
Android程序中的数据(如:SharedPreferences、文件数据和
数据库数据等)都是私有的。
ContentProvider是实现两个程序间进行数据交换的组件。
});
delete():删除表中数据。有三个参数:
第一个参数:String,数据表名称。 第二个参数:String ,条件语句。 第三个参数:String[],条件值。 例:sqliteDatabase.delete("user", "id=?", new String[]{"1"});
是Android自带的轻量级关系型数据库。

第07章Android中的数据存储1.

第07章Android中的数据存储1.

应用程序的数据文件默认保存在/data/data/ <package name>/files目录下,文件的后缀名随意。
7.1.1 手机内置存储空间文件的存取
在手机内置存储空间中创建文件、写入内容的一般步骤: (1)调用openFileOutput()方法,传入文件的名称和操作 的模式,该方法将会返回一个文件输出流; (2)调用write()方法,向这个文件输出流中写入内容; (3)调用close()方法,关闭文件输出流。
读取手机内置存储空间中文件的一般步骤: (1)调用openFileInput()方法,传入需要读取数据的文 件名,该方法将会返回一个文件输入流对象; (2)调用read()方法读取文件的内容; (3)调用close()方法,关闭文件输入流。
7.1.1 手机内置存储空间文件的存取
1、当我们手机上不存在该文件时,我们先写后读与先读 后写有区别吗?程序会不会出错?
文件可以被其他应用读取;
Context.MODE_WORLD_WRITEABLE =2:表示当前
文件可以被其他应用写入。
7.1.1 手机内置存储空间文件的存取
如果希望文件被其他应用读和写,可以传入: Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE
7.1.1 案例
程序清单:FileTest\res\layout\activity_main.xml
<LinearLayout xmlns:android="/apk/res/androi xmlns:tools="/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/writeText" android:layout_width="match_parent" android:layout_height="wrap_content" android:minLines="2" →设置文本输入框最少为两行 android:hint="@string/hint"/> →设置文本输入框的提示信息 <Button android:id="@+id/write" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/write"/>

Android数据存储(Data Storage)

Android数据存储(Data Storage)

Android提供几种保存持久化应用程序数据的选择。

依赖具体的需求来选择解决适合的方案,如数据应该是应用程序私有的还是共享的,以及数据所需要的存储空间等。

以下是可选择的数据存储方案:共享偏好(Shared Preferences)用键---值对的形式保存私有的原始数据。

内部存储(Internal Storage)在设备的内存上保存私有的数据。

外部存储(External Storage)在共享的外部存储器上保存公共的数据。

SQLite数据库在私有的数据库中保存结构化的数据。

网络连接(Network Connection)把数据保存在自己的互联网服务器上。

Android提供了内容提供器(content provider),能够你的私有数据公开给其他应用程序。

内容提供器是一种公开应用程序数据的读写访问权限的可选组件,这种读写访问会受到你所施加的任何限制的影响。

使用共享偏好SharedPreference类提供了一个一般性的框架,它允许用原始类型数据的键---值对的形式来保存和获取持久化的数据。

使用SharedPreference能够保存任意类型的原始类型数据:布尔型、浮点型、整数型、以及字符串。

这种数据会跨越用户的会话周期被持久化保存(即使是应用程序进程被杀死)。

有两种方法来为应用程序获取SharedPreferences对象:1.getSharedPreferences()方法---如果需要多个用名称来标识的偏好文件,就要使用这个方法,它的第一个参数要指定偏好文件的名称。

2.getPreferences()方法---如果仅需要针对Activity的一个偏好文件,就使用这个方法。

因为这个方法仅返回当前Activity的偏好文件,不需要提供偏好文件的名称。

以下是向偏好文件中写入数据的方法:1.调用edit()方法来获取一个SharedPreferences.Editor对象;2.调用诸如putBoolean()和putString()等方法来添加要保存的值;3.调用commit()方法来提交要保存的新值。

Android7-Android 数据存储

Android7-Android 数据存储
第7章 Android存储方式
内容概要
SharedPreferences存储方式; 文件存储方式;
SQLite数据库存储方式;
ContentProvider存储方式;
网络存储方式.
SharedPreferences存储方式
Android提供了5种存储方式,分别是 1) SharedPreferences存储方式; 2) 文件存储方式; 3) SQLite数据库存储方式; 4) ContentProvider存储方式; 5) 网络存储方式.
文件பைடு நூலகம்储方式
文件存储方式是一种较常用的方法,在Android中读 取/写入文件的方法,与 Java中实现I/O的程序是完 全一样的,提供了openFileInput()和 openFileOutput()方法来读取设备上的文件。 String fn = “moandroid.log”; FileInputStream fis = openFileInput(fn); FileOutputStream fos = openFileOutput(fn,Context.MODE_PRIVATE); 提示:openFileInput和openFileOutput方法中用到的 文件都是存储在/data/data/packageName/files目录 下的。
ContentProvider
ContentProvider实现 要创建我们自己的Content Provider的话,我们需要 遵循以下几步: a. 创建一个继承了ContentProvider父类的类 b. 定义一个名为CONTENT_URI,并且是public static final的Uri类型的类变量,你必须为其指定 一个唯一的字符串值,最好的方案是以类的全名称, 如:

第七章 Android 数据存储

第七章 Android 数据存储

第七章 Android 数据存储7.1 File存储Android上的文件存储与J2SE当中的文件存储类似,支持以文件的输入输出流来读取文件。

7.1.1 文件的读写Android在Context类当中提供了打开文件输入和输出流的方法。

这连个MODE_APPEND 、 MODE_WORLD_READABLE 、 MODE_WORLD_WRITEABLE当中的一种,第一种mode是表示该文件只能被当前程序读写,第二种是以追加的方式打开文件。

第三种是文件内容可以被其它程序读取,第四种是文件内容可以被其他程序读写。

下面通过一个实例来看如何读写文件。

1.创建一个名为TestFile的项目。

2.打开Activity文件,添加代码如下。

从上代码不难发现跟J2SE当中的IO数据读取基本类似。

7.1.2 读写SD卡上文件上小节主要介绍的是应用程序数据文件夹里的文件读取,这种存储方式有一定的限制,因为手机本身内置的存储空间是有限的,为了能够存储更多的数据,通常用户都会为手机添加一张SD卡,SD卡可以大大的扩充手机的存储能力。

本小节将重点来介绍如何读取SD卡上的文件。

Environment类中提供了方法来判断和获取SD卡的存在和获取路径。

需要特别注意的是在SD卡上读取文件前必须在AndroidManifest文件中先添加相应的权限。

下面通过实例来具体了解。

1.创建一个名为TestSDFile的项目。

2.打开AndroidManifest文件,添加权限如下第八行。

3.打开main.xml文件,添加代码内容如下。

4.新建一个名为FileUtil类,封装读写数据方法,如下图。

5.打开Activity文件,添加代码内容如下。

6.运行应用代码,输入内容如下图。

7.2 SQLite 数据库SQLite是Android系统当中的一个轻量级的数据库。

是一款开源的嵌入式数据库引擎,对多数的SQL92标准提供了支持,相较于其它大型的数据库来说,SQLite 是一个轻量级的数据库,它所占的资源小,处理速度快。

Android移动开发详解 第7章 Android数据存储编程

Android移动开发详解 第7章 Android数据存储编程

第7章 Android数据存储
7.1.1 File类及常用方法
➢ File类的常用方法:
➢ boolean exists() //测试文件是否存在 ➢ boolean delete() //删除此对象指定的文件 ➢ boolean createNewFile() //创建新的空文件 ➢ boolean isDirectory() //测试此对象表示的文件是否为目录 ➢ boolean mkdir() //创建由该对象表示的目录
第7章 Android数据存储
7.1.1 File类及常用方法
➢ File类的常用方法(续) :
➢ boolean mkdirs() //创建包括父目录的目录 ➢ String getAbsolutePath() //返回此对象表示的文件的绝对路径名 ➢ String getName() //返回此对象表示的文件的名称 ➢ String getParent() //返回此对象路径名的上一级,若路径名没有上一级,则返回null ➢ String renameTo(newFile) //将文件名重命名为文件对象newFile
第7章 Android数据存储
7.1.1 File类及常用方法
➢创建文件、删除文件、重命名文件的代码示例 ➢创建文件的名称, 假设文件名字为"myFile.txt"
public static final String FILE_NAME="myFile.txt"
第7章 Android数据存储
7.1.1 File类及常用方法
Android数据存储编程
第7章 Android数据存储
7.1 Android中的文件操作 7.2 SharedPreferences 7.3 SQLite数据库数据存储
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7.4.1 创建数据库
• Android为了能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮助类。该类是一个抽象类,具有 onCreate()和onUpgrade()两个抽象方法,这就意味着我们 需要创建一个自己的帮助类去继承它,然后分别在这两个方 法中去实现创建、升级数据库的逻辑。
• SQLiteOpenHelper帮助类中还有两个非常重要的实例方法: getReadableDatabase()和getWritableDatabase()方法。这 两个方法都可以创建或打开一个现有的数据库,并返回一个 可对数据库进行读写操作的对象。
• SQLiteOpenHelper帮助类中还有两个构造方法可供重写,一 般使用参数少一点的构造方法即可。这个构造方法中接收4 个参数,第一个参数是Context,必须要有它才能对数据库 进行操作;第二个参数是数据库名,创建数据库时使用的就 是这里指定的名称;第三个参数允许我们在查询数据的时候 返回一个自定义的Cursor,一般都是传入null;第四个参数 表示当前数据库的版本号,可用于对数据库进行升级操作。
• (3)配置LitePalApplication,打开AndroidManifest.xml 文件,在<application>标签内添加如下代码:
• android:name="org.litepal.LitePalApplication"
• 谢谢
感谢Leabharlann 谢谢,精品课件 资料搜集感谢
谢谢,精品课件
• (3)使用SharedPreferences.Editor编辑对象的putXxx() 方法来保存数据。
• (4)使用SharedPreferences对象的getXxx()方法来读取数 据。
• (5)使用SharedPreferences.Editor编辑对象的commit() 方法将数据提交到XML文件中。
让IT教学更简单A,nd让roITid学程习序更设有计效教程
第七章 Android数据存储
目录
• 7.1 数据存储方式简介 • 7.2 文件存储 • 7.3 SharedPreferences的使用 • 7.4 SQLite数据库存储 • 7.5 LitePal操作数据库
学习目标
• 了解数据存储方式的特点 • 掌握文件存储、SharedPreferences存储的使用 • 掌握SQLite数据库的增、删、改、查的使用 • 掌握LitePal插件操作数据库
7.4 SQLite数据库存储
• SQLite数据库比传统的数据库更加适用于嵌入式系统,因为 它占用空间非常少,运行高效可靠,可移植性好,并且提供 了零配置(zero-configuration)运行模式。
• SQLite数据库的优势在于其嵌入到使用它的应用程序中。这 样不仅提高了运行效率,而且屏蔽了数据库使用和管理的复 杂性,程序仅需要进行最基本的数据操作,其它操作可以交 给进程内部的数据库引擎完成。
• <?xml version="1.0" encoding="UTF-8" ?>
• <litepal>

<dbname value="BookStore"></dbname>

<version value="1"></version>

<list></list>
• </litepal>
• 其中,<dbname>标签用于指定数据库名,<version>标签用 于指定数据库版本号,<list>标签用于指定所有的映射模型。
7.4.5 删除数据
• SQLiteDatabase类中也提供了一个非常好用的delete()方法, 用于删除数据。这个方法有三个参数,第一个参数仍然是表 名,第二、第三个参数是用于约束删除某一行或某几行的数 据,不指定的话默认就是删除所有行。
7.4.6 查询数据
• SQLiteDatabase类中还提供了一个query()方法用于对数据 进行查询。这个方法的参数非常复杂,最短的一个方法重载 也需要传入7个参数。
7.3 SharedPreferences的使用
• SharedPreferences是一个轻量级的存储类,特别适合用于 保存软件配置参数,例如用于登录时的用户名、密码、性别 等参数。SharedPreferences保存数据,其实质是用xml文件 存放数据,文件存放在/data/data/<package name>/shared_prefs目录下。
7.4.4更新数据
• SQLiteDatabase类中也提供了一个非常好用的update()方法, 用于对数据进行更新。这个方法接收四个参数,第一个参数 和insert()方法一样,也是表名,在这里指定去更新哪张表 里的数据;第二个参数是ContentValues对象,就是要把更 新数据在这里组装进去;第三、第四个参数用于约束更新某 一行或某几行中的数据,不指定的话就是默认更新所有行。
• implementation files('libs/litepal-1.6.1.jar')
• 则说明LitePal开源库加载成功。其中最后的1.6.1是版本号 的意思。
• (2)需要配置litepal.xml文件。右击app/src/main目录 →New→Directory,创建一个assets目录,然后在assets目 录下再新建一个litepal.xml文件,并编辑litepal.xml文件 中的内容如下。
资料搜集
• (1)创建一个Android应用程序,将下载的jar文件拷贝到 app/libs目录里,然后右键点击这个包,在弹出的菜单中选 择“Add As Library”选项,在弹出的对话框中点击“确定” 按钮即可。 打开app/build.gradle文件,在dependencies 闭包中看到自动添加了如下内容:
位置
类型+名称
1 String table 2 String[] columns
3 String selection 4 String[]
selectionArgs 5 String groupBy 6 String having 7 String orderBy
对应 SQL 部分
说明
from table_name select column1,column2 where column=value
7.4.2 升级数据库
• 当我们需要对数据库中的表进行删除或增加时,就可以使用 SQLiteOpenHelper帮助类中onUpgrade()方法。
7.4.3 添加数据
• 对数据的操作无非有四种,即CRUD,其中C代表添加 (Create),R代表查询(Retrieve),U代表更新 (Update),D代表删除(Delete)。Android提供了一系列 的辅助性方法,使得在Android中不去编写SQL语句,也能轻 松完成所有的CRUD操作。
• 外部存储就是指把文件存储到一些外部设备上,例如SD卡、 设备内的存储卡等,属于永久性存储方式。使用这种类型存 储的文件可以共享给其他的应用程序使用,也可以被删除、 修改、查看等,它不是一种安全的存储方式。
• 内部存储是指将应用程序的数据,以文件的形式存储在应用 程序的目录下(data/data/<packagename>/files)。这个 文件属于该应用程序私有,如果其他应用程序想要操作本应 用程序的文件,就需要设置权限。内部存储的文件随着应用 程序的卸载而删除,随着应用程序的生成而创建。
• 在使用SharedPreferences进行数据操作的基本步骤如下:
• (1)使用getSharedPreferences()方法获取一个 SharedPreferences实例对象。
• (2)使用SharedPreferences实例对象的edit()方法,获取 SharedPreferences.Editor编辑对象。
7.1 数据存储方式简介
• Android中五种不同数据存储方式: • 文件存储 • SharedPreferences存储 • SQLite数据库存储 • 网络存储 • ContentProvider
7.2 文件存储
• Android中的文件存储与Java中的文件存储类似,都是以I/O 流的形式把数据存储到文件中。不同点在于Android中的文 件存储分为外部存储和内部存储两种。
将指针移动到上一条数据上
获取集合的数据数量
返回指定属性名称的序号,如果属性不存在则产生异常
返回指定序号的属性名称
返回属性名称的字符串数组
根据属性名称返回序号
将指针移动到指定的数据上
返回当前指针的位置
7.5 LitePal操作数据库
• LitePal是一款开源的Android数据库框架,它采用了对象关 系映射(ORM)的模式,并将我们平时开发最常用到的一些 数据库功能进行了封装,使得不用编写一行SQL语句就可以 完成各种建表和增删改查的操作。
group by column having column=value order by column
指定查询的表名 指定查询的列明
指定 where 的约束条件 为 where 中的占位符提供具 体内容 分组方式 定义组的过滤器 指定查询结果的排序方式


moveToFirst()
moveToNext()
• SQLiteDatabase类中提供了一个insert()方法,这个方法就 是专门用于添加数据的,其返回值是新数据插入的位置,即 ID值。它接受三个参数:第一个参数指定需要添加数据的表 名;第二个参数用于在未指定添加数据的情况下给某些可为 空的列自动赋值NULL,直接传入null即可;第三个参数是一 个ContentValues对象,它提供了一系列的put()方法重载, 用于向ContentValues中添加数据,只需要将表中的每个列 名以及相应的待添加数据传入即可。
相关文档
最新文档