您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Android移动应用设计与开发--第08章
Android移动应用设计与开发第8章数据存储和提供器8.1SharedPreference存储8.2SQLite存储8.2.1SQLite简介8.2.2SQLite使用8.3ContentProvider存储8.4文件存储本章导读第8章数据存储和提供器作为一个完整的应用程序,数据的存储与操作是必不可少的。Android系统为我们提供了四种数据存储方式,分别是:SharedPreference、SQLite、File和ContentProvider。8.1SharedPreference存储通常很多软件都会有配置文件,里面存放该程序运行当中的各个属性值,由于其配置信息并不多,所有通常不采用数据库的存储方式,因此我们利用SharedPreferences中键值对(key-value)这种一一对应的关系来存放这些配置信息。SharedPreferences将数据以键值对(key-value)的形式保存至xml文件中,而生成的xml文件保存于/data/data/程序包名(packagenam)/shared_prefs目录下。SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据,但只能保存基本类型的值。8.1SharedPreference存储代码如下项目名:com.androidbook.sharedpreferencetest案例:使用SharedPreferences存储基本数据类型SharedPreferencessharedPreferences=getSharedPreferences(type,Context.MODE_APPEND);Editoreditor=sharedPreferences.edit();//String字符串型editor.putString(String,words);//Boolean布尔型editor.putBoolean(Boolean,true);//Integer整型editor.putInt(Integer,1);//Long长整型editor.putLong(Long,1000000);//Float浮点数型editor.putFloat(Float,3.5f);editor.commit();生成的SharedPreferences文件名为type.xml,保存在应用程序文件夹下的shared_prefs。从type.xml文件中可以看到这些存储数据的呈现方式如下:项目名:com.androidbook.sharedpreferencetest案例:SharedPreferences数据类型结构——type.xml内容?xmlversion='1.0'encoding='utf-8'standalone='yes'?mapfloatname=Floatvalue=3.5/longname=Longvalue=1000000/booleanname=booleanvalue=true/stringname=Stringwords/stringintname=Integervalue=1//map8.1SharedPreference存储SharedPreferences对象的常用方法有以下几种:contains(Stringkey)判断SharedPreferences是否包含特定名称为键(key)的数据,返回值类型为boolean,是返回true,否返回false。edit()返回一个Edit对象用于操作SharedPreferences,返回值类型为Editor。getAll()获取SharedPreferences数据里全部的键值对(key-value),返回值类型为MapString,Object。getXxx(Stringkey,XxxdefValue)获取SharedPreferences指定键(key)所对应的值(value),其中Xxx表示不同的数据类型。8.1SharedPreference存储SharedPreferences.Editor对象的常用方法clear()清空SharedPreferences里所有的数据。putXxx(Stringkey,Xxxvalue)向SharedPreferences存入指定的key对应的数据,其中Xxx与之前所述相同一样,表示不同的数据类型。commit()当Editor编辑完成后,调用该方法可以提交修改,相当于数据库中的提交操作。无论对SharedPreferences对象进行了什么操作,最后都必须使用commit()方法进行保存,否则将无法存储修改信息。返回值类型为boolean,提交成功返回true,失败返回false。remove(Stringkey)删除SharedPreferences里指定key对应的值。返回值类型为Editor。8.1SharedPreference存储使用SharedPreferences保存键值对(key-value)的步骤如下:1使用Activity类的getSharedPreferences(Stringname,intmode)方法获得SharedPreferences对象,其中存储键值对(key-value)的文件的名称由getSharedPreferences方法的name指定,mode则指定打开方式。2使用SharedPreferences的edit()方法获得SharedPreferences.Editor对象。3通过SharedPreferences.Editor的putXxx(Stringkey,Xxxvalue)方法写入键值对(key-value)。4通过SharedPreferences.Editor的commit()方法提交保存键值对(key-value)。8.1SharedPreference存储使用SharedPreferences读取键值对(key-value)的方法::1使用Activity类的getSharedPreferences(Stringname,intmode)方法获得所需读取的SharedPreferences对象,与上述保存键值对(key-value)的第一步相同。2使用SharedPreferences接口的getXXX(Stringkey,Xxxvalue)方法,可以方便的获得对应键(key)的值(value)。48.2.1SQLite简介SQLite是一种轻量级数据库系统,以嵌入式操作系统为设计目标,占用资源低,因此选择其作为手机操作系统的本地数据库,此外它还是开源的,任何人都可以使用。许多开源项目((Mozilla,PHP,Python)都使用了SQLite,同样Android运行的环境包含了完整的SQLite。SQLite由以下几个组件组成:SQL编译器、内核、后端以及附件。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核变得更加方便。虽然SQLite基本上符合SQL-92标准,但是SQLite和其他数据库最大的不同就是对数据类型的支持,此外SQLite也不支持一些标准的SQL功能,特别是外键约束(FOREIGNKEYconstrains),嵌套transcaction和RIGHTOUTERJOIN和FULLOUTERJOIN,还有一些ALTERTABLE功能。除了上述功能外,SQLite是一个完整的SQL系统,拥有完整的触发器,交易等等。8.2.2SQLite使用SQLite和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在CREATETABLE语句中指定某列的数据类型。可以指定以下几种列的类型:TEXT;NUMERIC;REAL;INTEGER;NONE实际上,SQLite其内部仅有下列五种存储值的类型:NULL;INTEGER;REAL;TEXT;BLOB8.2.2SQLite使用在Android中,SQLite的使用涉及两个重要的类,SQLiteDatabase和SQLiteOpenHelper:1、SQLiteOpenHelper具体方法:onCreate(SQLiteDatabasedb)一个SQLiteDatabase对象作为参数,当数据库第一次被建立的时候被执行,例如创建表,初始化数据等。onUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)需要三个参数,一个SQLiteDatabase对象,一个旧的数据库版本号(oldVersion)和一个新的数据库版本号(newVersion),当数据库需要被更新的时候执行,例如删除久表,创建新表,这样就可以把一个数据库从旧的模型转变到新的模型。getReadableDatabase()得到可读的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库读取操作。getWritableDatabase()得到可写的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库写入或者读取操作。onOpen(SQLiteDatabasedb)当打开数据库时的回调函数。close()关闭数据库,需要强调的是,在每次打开数据库之后停止使用时调用,否则会造成数据泄露。8.2.2SQLite使用2、SQLiteDatabase具体方法:publiclonginsert(Stringtable,StringnullColumnHack,ContentValuesvalues)用于往表中插入一条记录。table指定要插入数据的表的名称,values为一个ContentValues对象,类似一个map通过键值对的形式存储值,是要插入的记录的所有值,其中的键必须与表中的字段名相同publicintdelete(Stringtable,StringwhereClause,String[]whereArgs)用于删除表中的一条记录。table指定要删除数据的表的名称,whereClause指定要根据哪个列字段参数来进行删除,whereArgs是删除的具体依据参数。publicintupdate(Stringtable,ContentValuesvalues,StringwhereClause,String[]whereArgs)用于修改数据表中的一条数据。table指定要删除数据的表的名称,whereClause指定要根据哪个列字段参数来进行删除,whereArgs是删除的具体依据参数。使用方法与delete方法相同,values则只用来保存需要修改的值。publicCursorquery(Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy,Stringlimit)用于查询数据表中的信息,获得指向对应要求数据的游标。table指定要删除数据的表的名称;columns指定需要查询的列,selection与selectionArgs参数使用与之前方法中whereClause与whereArgs相同;groupBy与having是与合计函数(AggregateFunctions),如SUM()一起使用的,一般设为null;orderBy指定查询数据顺序,可以以其中一个字段的升降序顺便查询,如以“ID”字段的降序排列,则orderBy为IDDESC,其中DESC代表降序的含义,而ASC代表升序;limit则指定限制查询数据的个数。8.3ContentProvider存储ContentProvider是Android平台中,在不同应用程序之间实现数据共享的唯一机制。一个应用程序如果需要让别的应用程序能够操作自己的数据,即可采用这种机制。一个程序可以通过实现一个ContentProvider的
本文标题:Android移动应用设计与开发--第08章
链接地址:https://www.777doc.com/doc-3375694 .html