版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章数据存储Android应用程序开发技术
Android中有三种存储方式,分别是文件存储、SharedPreferences存储和数据库存储。文件存储主要用于存储资源文件如日记等。SharedPreferences存储主要用于程序中的少量数据存储,例如应用程序的登录界面中的用户名和密码等数据。数据库存储主要用于程序中有大量的数据需要存储,在Android中内置了SQLite数据库。第六章数据存储
6.1文件存储 6.2SharedPreferences存储 6.3SQLite数据库存储内容安排6.1文件存储
基于文件流的读取与写入是Android平台上的数据存取方式之一。如果使用Java语言开发Android程序就可以将Java提供一整套完整的IO流操作应用于程序开发。如FileInputStream、FileOutputStream等。Android同样支持以流的方式来访问手机存储器上的文件。6.1.1使用IO流操作文件的常用方法
可以通过Android包中提供的Contex对象的如下方法:openFileInput和openFileOutput来分别获取FileInputStream和FileOutputStream。 1.FileInputStreamopenFileInput(Stringname)
打开应用程序私有目录下由参数fileName指定的私有文件以读入数据,返回一个FileInputStream对象。参数mode的含义如表所示。常量含义MODE_PRIVATE默认模式,表示该文件是私有数据文件,只能被应用自身访问,写入内容会覆盖原文件内容。MODE_APPEND
改模式会检查文件是否存在,如果文件已存在就向该文件的末尾继续写入数据,否则创建文件。MODE_WORLD_READABLE所有的应用程序对该文件具有读的权限。(出于安全不建议使用)MODE_WORLD_WRITEABLE
所有的应用程序对该文件具有写的权限。(出于安全不建议使用)6.1.1使用IO流操作文件的常用方法【例6-1】利用本地文件存储和加载记事本信息,运行效果如图所示。屏幕下方的“保存”按钮可以将输入的信息存储到本地文件“note.txt”中,“加载”按钮可以将之前保存到文件的信息加载到文本框中显示。6.1.2文件操作举例
6.1文件存储
6.2SharedPreferences存储 6.3SQLite数据库存储内容安排6.2SharedPreferences存储
在应用程序中通常会有保存用户使用偏好设置的需求。对于这类信息在Android中通常采用一个轻量级的文件存储类—SharedPreferences将信息保存在本机的应用程序包名\shared_prefs目录下的特定文件中。SharedPreferences是用xml文件存放数据。文件存放在/data/data/<packagename>/shared_prefs目录下,使用键-值对(Key-Value)形式来存储数据。6.2.1SharedPreferences接口
SharedPreferences是android.content包提供的接口,常用方法如表所示。方法名功能说明boolean contains(Stringkey)检查是否包含指定key的数据SharedPreferences.Editoredit()返回SharedPreferences.Editor编辑对象Map<String,?> getAll()获取SharedPreferences.Editor中所有key-value对,返回类型为Mapboolean getXxx(Stringkey,XxxdefValue)返回SharedPreferences中指定key的数据,如果key不存在,则返回默认值defValue,Xxx是数据类型,支持boolean、float、int、long、String和StringSet6.2.1SharedPreferences接口SharedPreferences.Editor提供的常用方法如表所示。方法名功能说明SharedPreferences.Editor clear()清空SharedPreferences中的所有数据SharedPreferences.Editorremove(Stringkey)删除SharedPreferences中key指定的数据SharedPreferences.EditorputXxx(Stringkey,Xxxvalue)将指定key的数据保存到SharedPreferences对象中,Xxx是数据类型,支持boolean、float、int、long、String和StringSetboolean commit()Editor数据写入完成后使用该方法将数据直接存储到文件中去,如果成功返回true,否则返回false。voidapply()与commit()方法类似,差别是没有返回值,且只实时更新SharedPreferences内存中的数据,对SharedPreferences文件的更新是异步的。6.2.2SharedPreferences操作步骤1.数据保存的步骤获得SharedPreferences对象。SharePreferences本身是一个接口,不能直接实例化,可以通过Context环境上下文对象提供的getSharedPreferences()方法来获取SharePreferences对象实例。2.数据读取的步骤获得SharedPreferences对象;通过SharedPreferences对象的getXXX方法获取数据。6.2.3SharedPreferences应用举例【例6-2】利用SharedPreferences存储APP登录页面的账号和密码。运行效果如图所示。用户单击“登录”按钮后,如果用户勾选了“记住密码”复选框,就将本次用户输入的账户和密码键值对存储到本机的SharedPreferences文件中,下次用户登录时就直接显示存储的账号和密码信息。6.2.3SharedPreferences应用举例1.新建工程
新建工程名为xsyu.jsj.samp_sharedprefs的空白工程。工程中包含两个布局文件和两个Activity文件,分别对应登录页面(activity_login.xml和LoginActivity.java)和登录后的主页面(activity_main.xml和MainActivity.java)。2.实现登录页面的布局文件登录页面布局如图所示,包含两个TextView、两个EditView、一个CheckBox和一个Button组件。6.2.3SharedPreferences应用举例文件activity_login.xml部分代码如下所示。6.2.3SharedPreferences应用举例3.定义成员变量并绑定组件在LoginActivity.java文件中,为LoginActivity类增加下面三个成员变量。
EditTextetusername,etpwd;CheckBoxcbremember;SharedPreferencessharedPreferences;然后编写initView()方法实现组件成员变量的绑定,并在onCreate()方法中调用该方法。6.2.3SharedPreferences应用举例4.在登录按钮点击事件处理方法中利用SharedPreferences文件保存账号和密码。activity_login.xml已经为登录页面中的“登录”按钮设置了组件的onClick单击事件的方法名是login(),该方法的功能是根据用户对“记住密码”CheckBox组件的设置情况来决定是否将用户输入的账号和密码保存在本机应用程序包目录\shared_prefs\account.xml文件中。
6.2.3SharedPreferences应用举例login(Viewview)的完整代码如下。5.实现页面加载时读取上次保存在SharedPreferences文件中的账号和密码。如果用户勾选了“记住密码”,那么下一次在登录时就应当将存储在account.xml文件中的账号和
密码读取并显示在登录界面中。accountread()代码如下。
6.2.3SharedPreferences应用举例
6.1文件存储 6.2SharedPreferences存储
6.3SQLite数据库存储内容安排6.3SQLite数据库存储
应用程序都需要存储数据,前面介绍的文件存储可以保存一些简单的数据,SharedPreferencs只适用与保存键值对类型的数据。当需要保存的数据量较大,且结构复杂的关系型数据则需要使用数据库,在Android中存储数据的主要方法就是使用SQLite数据库。6.3.1SQLite简介
SQLite是Android中内置的数据库,为Android提供一个轻量级的关系型数据库。Android原生支持SQLite,为此提供了如下的3个类。SQLiteOpenHelper:负责数据库的创建和升级。SQLiteDatabase:负责接入数据库,实现对数据的增删改查操作。Cursor:负责读写数据库。6.3.2数据库的创建和删除
Android提供了基于SQLiteDatabse的SQLiteOpenHelper帮助类,用来管理数据库的创建和版本更新。1.SQLiteOpenHelper简介SQLiteOpenHelper管理数据库体现在以下三个方面: 1)新建数据:第一次安装App时,数据库文件不存在,助手会创建数据库文件并建立表。2)便于访问数据库:SQLiteOpenHelper可以返回一个易于使用的数据库对象,程序通过它访
问数据库,而非直接读取数据库文件。
3)数据库格式升级维护:当数据库的表结构或表的数据发生变
化时,助手可在App升级时,
安全的转换数据库结构。SQLiteOpenHelper类提供了两个重要的方法,分别是onCreate()和onUpgrade()。onCreate()方法在初次生成数据库时才会被调用,因此可以在onCreate()方法里添加生成数据库
表结构及一些应用使用到的初始化数据。onUpgrade()方法在数据库的版本发生变化时会被调
用,一般在软件升级时才需改变版本号。6.3.2数据库的创建和删除2.新建SQLiteOpenHelper子类数据库创建的流程
使用SQLiteOpenHelper创建数据库通常的步骤是:
子类继承自SQLiteOpenHelper; SQLiteOpenHelper的子类必须提供构造方法;
数据库第一次被访问时新建,需要指定文件名和版本号;
子类必须覆盖SQLiteOpenHelper类的两个抽象方法:onCreate()和onUpgrade(); onCreate()在数据库被新建时调用; onUpgrade()在数据库升级时被调用;6.3.2数据库的创建和删除
3.SQLiteOpenHelper类的常用方法SQLiteOpenHelper提供的主要方法如表所示。方法作用abstractvoidonCreate(SQLiteDatabasedb)创建数据库abstractvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)升级数据库publicvoidonDowngrade(SQLiteDatabasedb,intoldVersion,intnewVersion)降级数据库SQLiteDatabasegetReadableDatabase()以只读方式打开数据库SQLiteDatabasegetWritableDatabase()以读写方式打开数据库publicvoidclose()关闭所有打开的SQLiteDatabase对象6.3.2数据库的创建和删除6.3.3数据库中表的操作1.SQLiteDatabase类简介SQLiteDatabase代表一个数据库,对应了一个数据库文件。数据库使用表table存储数据。SQLite支持的数据类型有五种,如表所示。数据类型说明INTEGER整数型VARCHAR字符型REAL浮点型NUMBERIC布尔型、日期型或日期时间型BLOB二进制大数据2.创建表和删除表1)新建表新建表可以通过SQLiteDatabase.execSQL()方法执行SQL语句完成。Android在新建数据库的时候会自动回调SQLiteOpenHelper的onCreate()方法。Android将SQLiteDatabase对象作为参数传入onCreate(),因此在onCreate()中可以调用SQLiteDatabase.execSQL()方法完成表的创建。6.3.3数据库中表的操作2.创建表和删除表2)删除表删除表的操作是通过调用SQLiteDatabase类提供的execSQL()方法,执行删除表的SQL语句实现。例如,执行下面的语句就可以删除SQLiteDatabase类型对象db中的stu_info表。Stringsql=“droptablestu_info”;db.execSQL(sql);6.3.3数据库中表的操作3.数据操作1)添加数据添加数据可以使用SQLiteDatabase的insert()方法和execSQL(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- MT/T 1083-2025煤矿矿井提升机电控设备技术条件
- 2026年城市共享办公室租赁合同协议
- 芜湖航空职业学院《运动营养学》2025-2026学年期末试卷
- 中国医科大学《中药药剂学》2025-2026学年期末试卷
- 长春金融高等专科学校《测量学》2025-2026学年期末试卷
- 【 物理 】阿基米德原理课件2025-2026学年沪科版八年级物理全一册
- 深度解析(2026)《GBT 4127.14-2008固结磨具 尺寸 第14部分:角向砂轮机用去毛刺、荒磨和粗磨砂轮》
- 2026年人教版小学六年级数学上册百分数实际应用卷含答案
- 2026年人教版小学二年级数学上册期末综合计算练习卷含答案
- 深度解析(2026)《GBT 3579-2006自行车链条 技术条件和试验方法》
- 安徽华师联盟2026届高三4月质量检测数学试卷(含答案详解)
- 2026年云南省戎合投资控股有限公司社会招聘8人笔试参考题库及答案解析
- 招21人!大通县2026年公开招聘编外临聘工作人员考试参考试题及答案解析
- (2025年)中小学生交通安全知识竞赛试题及答案(全文)
- 2025年长沙市芙蓉区事业单位招聘笔试试题及答案解析
- 房屋渗水解决方案
- 乡镇卫生院耗材采购制度
- 湖南省新高考教学教研联盟(长郡二十校联盟)2026届高三下学期3月联考试题 英语 含解析
- 臭氧治疗风险告知与同意书模板
- 酒店资金内部控制制度
- 2026年广州民航职业技术学院单招职业适应性测试题库含答案详解(基础题)
评论
0/150
提交评论