Android应用程序开发 教学课件 ppt 作者 汪杭军 第8章 Android数据存储.pptx
《Android应用程序开发 教学课件 ppt 作者 汪杭军 第8章 Android数据存储.pptx》由会员分享,可在线阅读,更多相关《Android应用程序开发 教学课件 ppt 作者 汪杭军 第8章 Android数据存储.pptx(26页珍藏版)》请在冰豆网上搜索。
Android应用程序开发第8章Android数据存储2020/1/91目录2020/1/928.1数据存储简介2.SharedPreference数s据存储3.File数s据存储4.Android数据库编程5.数据共享6.数据存储示例8.1数据存储简介2020/1/93Android系统提供了以下四种主要的数据存储方式:
8.1数据存储简介2020/1/94数据存储的四种使用方式8.2SharedPreferences2020/1/95数据存储1、SharedPreferences接口用于保存参数设置等较为简单的数据。
2、SharedPreferences是一个接口,不能直接实例化,只能通过Context提供的getSharedpreferences(Stringname,intmode)方法来获取SharedPreferences实例,name参数表示保存信息的文件名,不需要后缀;mode参数表示访问权限。
8.2SharedPreferences2020/1/96数据存储如果应用程序中使用了Preferences,那么便会在该文件夹下产生一个Shared-prefs文件夹,其中就有我们保存的数据。
按照以下步骤进行查看:
1、启动模拟器,启动Eclipse。
2、在Eclipse中切换到DDMS视图,选择FileExplorer标签。
3、找到/data/data目录中对应的项目文件夹下的shared-prefs文件夹。
例如本节的edu.zafu.ch8_2项目中用preferences来存取的数据保存在ch8_2.xml文件中,如图8-4所示。
8.3Files数据存储2020/1/97Android中文件的读取操作主要通过Context类来完成,该类提供了两种方法来打开文件夹里的文件IO流。
1、FileInputStreamopenFileInput(Stringname):
打开应用程序的数据文件夹下的name文件对应输入流。
这个参数用于指定文件名称,不能包含路径分隔符“/”,如果文件不存在,Android会自动创建它。
2、FileOutputStreamopenFileOutput(Stringname,intmode):
打开应用程序的数据文件夹下的name文件对应输出流。
这个参数于指定操作模式,表8-1是Android系统支持四种文件操作模式。
8.3Files数据存储2020/1/98创建及写文件的步骤:
1、调用OpenFileOutput()方法,传入文件的名称和操作的模式,该方法将返回一个文件输出流。
2、调用Write()方法,向该文件输出流写入数据。
3、调用Close()方法,关闭文件输出流。
8.3Files数据存储2020/1/99读取文件的步骤1、调用OpenFileInput()方法,传入需要读取数据的文件名,该方法将会返回一个文件输入流对象。
2、调用Read()方法读取文件的内容。
3、调用Close()方法,关闭文件输入流。
8.3Files数据存储2020/1/910写入文件和读取文件实例:
8.3Files数据存储2020/1/9118.4Android数据库编程2020/1/9128.4.1SQLite简介1SQLite由以下几个组件组成:
SQL编译器、内核、后端以及附件。
2SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核变得更加方便。
8.4Android数据库编程2020/1/913SQLite内部结构8.4Android数据库编程2020/1/914SQLite数据库具有如下特征:
1轻量级2独立性3隔离性4跨平台5多语言接口6安全性8.4Android数据库编程2020/1/9158.4.2SQLite编程8.4Android数据库编程2020/1/9161打开或者创建数据库:
SQLiteDatabase.openOrCreateDatabase(/data/data/com.hualang.test/databases/temp.db,null);2创建表创建一张表,首先编写创建表的SQL语句;然后调用的execSQL()方法便可以创建一张表。
SQLiteDatabase(3)插入数据插入数据有两种方法:
一种是调用SQLiteDatabase的insert(Stringtable,StringnullColumnHack,ContentValuesvalues)方法;另一种方法是编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行。
8.4Android数据库编程2020/1/9174删除数据删除数据也有两种方法:
一种是调用SQLiteDatabase的delete(Stringtable,StringwhereClause,StringwhereArgs)方法;另一种方法是编写删除SQL语句,调用SQLiteDatabase的execSQL()方法来执行删除。
5查询数据publicCursorquery(Stringtable,Stringcolumns,Stringselection,StringselectionArgs,StringgroupBy,Stringhaving,StringorderBy,Stringlimit);6修改数据修改数据有两种方式,一是调用SQLiteDatabase的update(Stringtable,ContentValuesvalues,StringwhereClause,StringwhereArgs)方法。
二是编写更新的SQL语句,调用SQLiteDatabase的execSQL执行更新。
8.4Android数据库编程2020/1/9188.4.3SQLiteOpenHelper应用8.5数据共享(ContentProviders2020/1/919)ContentProvider是不同应用程序间共享数据的标准API,统一了数据访问方式。
(1)ContentResolver所有的ContentProvider通过实现一个通用的接口来实现数据的增删查改操作,并返回操作结果。
ContentResolvercr=getContentResolver();8.5数据共享(ContentProviders2020/1/920)
(2)数据模型ContentProviders通过类似数据库二维表方式展现数据。
8.5数据共享(ContentProviders2020/1/921)3URI每个ContentProvider暴露一个唯一标识其数据集的Uri,Uri被一个Uri对象封装。
一个ContentProvider通过每个特定的Uri控制着多个数据集(数据表)。
所有的Uri都以“content:
/”开头,content表名数据由ContentProvider控制。
4查询数据通过ContentResolver.query()及Activity.managerQuery()方法,均可以实现Provider的查询操作,并且2个方法的参数一致,且返回也一致,都为一个游标Cursor对象。
8.5数据共享(ContentProviders2020/1/922)5读取游标Cursor数据读取游标数据,须知道读取字段的数据类型。
因为游标对象Cursor提供了独立的数据类型读取方法,比如getString(),getInt(),getFloat()。
6修改数据的方法来所有的数据修改操作都是通过使用ContentResolver完成的。
(7)添加数据在ContentProvider增加一条记录,首先要设置一个ContentValuesContentValues的键值对对象。
然后传递Provider的uri和映射参数给ContentResolver的insert()方法,这个方法返回一个uri,通过附加一个ID指向你新增的记录。
8.5数据共享(ContentProviders2020/1/923)8删除数据删除记录则相当简单,只需要调用ContentResolver.update()方法即可。
9创建contentprovider在我们创建的contentprovider类中定义一个公共的、静态的常量CONTENT-URI来代表这个URI地址,该地址必须是唯一的。
必须定义你要返回给客户的数据列名。
在Androidmenifest.xml中使用标签来设置contentprovider。
还要通过setreadpermission()和setwritepermission()来设置其操作权限。
最后,需要将Mycontentprovider加入到项目中。
8.5数据共享(ContentProviders2020/1/924)8.6综合应用数据存储2020/1/925SQlite应用新闻2020/1/926