中间件技术应用课件Android四种存储方式.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《中间件技术应用课件Android四种存储方式.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中间件 技术 应用 课件 Android 存储 方式
- 资源描述:
-
1、middleware technology and applicationAndroid四种存储方式四种存储方式宁夏大学数学计算机学院二零一五年作为一个完整的应用程序,数据存储操作是必不可少的。Android系统一共提供了四种数据存储方式。分别是:SharePreference、SQLite、Content Provider和File。由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider。Android四种存储方式四种存储方式middleware technology and app
2、lication一、一、File存储方式存储方式File:即常说的文件(I/O)存储方法,常用存储大数量的数据,但是缺点是更新数据将是一件困难的事情。下面实现:在本地data文件下使用自己生成的文件处理数据的新建储存、读取、删除。File基本概念基本概念1.保存文件内容:通过Context.openFileOutput获取输出流,参数分别为文件名和存储模式。2.读取文件内容:通过Context.openFileInput获取输入流,参数为文件名。3.删除文件:Context.deleteFile删除指定的文件,参数为将要删除的文件的名称。4.获取文件名列表:通过Context.fileList
3、获取files目录下的所有文件名数组。*获取文件路径的方法:绝对路径:/data/data/files/filenameContext:Context.getFilesDir()可以获取到/data/data/filesFile方式实现的基本操作方式实现的基本操作1.Context.MODE_PRIVATE 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下写入的内容会覆盖原文件的内容。2.Context.MODE_APPEND 检查文件是否存在,存在就往文件追加内容,否则就创建新文件。3.MODE_WORLD_READABLE 表示当前文件可以被其他应用读取。4.MODE_
4、WORLD_WRITEABLE 表示当前文件可以被其他应用写入。在使用模式时,可以用“+”来选择多种模式,如:openFileOutput(FILENAME,Context.MODE_PRIVATE+MODE_WORLD_READABLE);四种文件保存的模式。private void write()String nameage=“名字:”+name.getText().toString().trim()+“年龄:+age.getText().toString();try os=this.openFileOutput(SHARED_MAIN_XML,MODE_PRIVATE);/*把字符串转换
5、成字节数组,写入文件中*/os.write(nameage.getBytes();catch(FileNotFoundException e)e.printStackTrace();catch(IOException e)e.printStackTrace();finally try/*关闭文件输出流*/os.close();catch(IOException e)e.printStackTrace();写:private String read()String nameage=“;/打开文件输入流,try is=this.openFileInput(SHARED_MAIN_XML);/*初始
6、化字节数组*/b=new byte1024;/*从文件输入流中读取内容到字节数组中,返回内容长度*/int length=is.read(b);/*把字节数组转换成字符串*/nameage=new String(b);catch(FileNotFoundException e)e.printStackTrace();catch(IOException e)e.printStackTrace();return nameage;读:middleware technology and application二、二、SQLite存储方式存储方式SQLite基本概念基本概念SQLite是一个轻量级的数据
7、库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是:NULL:空值 INTEGER:整数REAL:浮点数 TEXT:字符串BLOB:大数据在SQLite中,并没有专门设计BOOLEAN和DATE类型,因为BOOLEAN型可以用INTEGER的0和1代替true和false,而DATE类型则可以拥有特定格式的TEXT、REAL和INTEGER的值来代替显示,为了能方便的操作DATE类型,SQLite提供了一组函数,详
8、见:http:/www.sqlite.org/lang_datefunc.html。关于关于SQLite在Android系统中提供了android.database.sqlite包,用于进行SQLite数据库的增、删、改、查工作。其主要方法如下:beginTransaction():开始一个事务。close():关闭连接,释放资源。endTransaction():结束一个事务。execSQL(String sql):执行给定SQL语句。delete(String table,String whereClause,String whereArgs):根据给定条件,删除符合条件的记录。SQLit
9、e中的中的 APIinsert(String table,String nullColumnHack,ContentValues values):根据给定条件,插入一条记录。openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory):根据给定条件连接数据库,如果此数据库不存在,则创建。query(String table,String columns,String selection,String selectionArgs,String groupBy,String having,String orderBy)
10、:执行查询。SQLite中的中的 APIrawQuery(String sql,String selectionArgs):根据给定SQL,执行查询。update(String table,ContentValues values,String whereClause,String whereArgs):根据给定条件,修改符合条件的记录。除了上诉主要方法外,Android还提供了诸多实用的方法,总之一句话:其实Android访问数据库是一件很方便的事儿。SQLite中的中的 API封装一个类去继承SQLiteOpenHelper 在构造函数中传入数据库名称与数据库版本号。数据库被创建的时候会调
11、用onCreate(SQLiteDatabase db)方法。数据库版本号发生改变的时候会调用onUpgrade(SQLiteDatabase db,int oldVersion,intnewVersion)方法。创建与删除数据库创建与删除数据库调用SQLiteOpenHelper 的getReadableDatabase()方法去创建数据库,如果数据库不存在则创建并且返回SQLiteDatabase对象,如果数据库存在则不创建只返回SQLiteDatabase对象。调用 deleteDatabase(DATABASE_NAME)方法 传入数据库名称则可删除数据库。创建与删除数据库创建与删除数
12、据库publicclassUserService privateDatabaseHelperhelper;publicUserService(Contextcontext,Stringname,intversion)helper=newDatabaseHelper(context,name,version);publicUserService(Contextcontext,Stringname)helper=newDatabaseHelper(context,name);下面是个简单的例子,用来实现增删改:下面是个简单的例子,用来实现增删改:插入数据插入数据publicvoidinsert(U
13、serDaouser)/插入数据SQLiteDatabasesdb=helper.getWritableDatabase();ContentValuesvalues=newContentValues();values.put(username,user.getUsername();values.put(password,user.getPassword();sdb.insert(user,name,values);sdb.close();publicvoiddelete(intid)/删除数据SQLiteDatabasesdb=helper.getWritableDatabase();sdb.
14、delete(user,id=?,newStringString.valueOf(id);sdb.close();删除数据删除数据publicvoidupdate(UserDaouser,intid)/更新数据SQLiteDatabasesdb=helper.getWritableDatabase();ContentValuesvalues=newContentValues();values.put(username,user.getUsername();values.put(password,user.getPassword();sdb.update(user,values,id=?,new
15、StringString.valueOf(id);sdb.close();更新数据更新数据publicCursorselect()/查询所有数据SQLiteDatabasesdb=helper.getWritableDatabase();returnsdb.query(user,newStringidas_id,username,password,null,null,null,null,null);查询所有数据publicUserDaofind(intid)/按id查询数据UserDaouser=null;SQLiteDatabasesdb=helper.getWritableDatabase
16、();Cursorcursor=sdb.query(user,newStringid,username,password,id=?,newStringString.valueOf(id),null,null,null);if(cursor.moveToFirst()user=newUserDao();user.setId(cursor.getInt(0);user.setUsername(cursor.getString(1);user.setPassword(cursor.getString(2);cursor.close();sdb.close();returnuser;按id查询数据插入
17、数据:通过insert(String table,StringnullColumnHack,ContentValues values)方法插入数据,其中参数含义分别为:table:目标表名nullColumnHack:指定表中的某列列名。因为在SQLite中,不允许不允许插入所有列均为null的记录,因此初始值有值为空时,此列需显式赋予nullvalues:ContentValues对象,类似于java中的Map。以键值对的方式保存数据。插入数据:插入数据:修改数据:update(String table,ContentValues values,String whereClause,Stri
18、ng whereArgs)方法用于修改数据,其四个参数的具体含义如下:table:目标表名values:要被修改成为的新值whereClause:where子句,除去where关键字剩下的部分,其中可带?占位符。如没有子句,则为null。whereArgs:用于替代whereClause参数中?占位符的参数。如不需传入参数,则为null。修改数据:修改数据:查询数据:query()方法用SELECT 语句段构建查询。SELECT 语句内容作为 query()方法的参数,比如:要查询的表名,要获取的字段名,WHERE 条件,包含可选的位置参数,去替代 WHERE 条件中位置参数的值,GROUP
19、BY 条件,HAVING 条件。除了表名,其他参数可以是 null。所以,以前的代码段可以可写成:String columns=ID,inventory;String parms=snicklefritz;Cursor result=db.query(widgets,columns,name=?,parms,null,null,null);查询数据:查询数据:不管你如何执行查询,都会返回一个 Cursor,这是 Android 的 SQLite 数据库游标,使用游标,你可以:通过使用 getCount()方法得到结果集中有多少记录;通过 moveToFirst(),moveToNext(),和
20、 isAfterLast()方法遍历所有记录;通过 getColumnNames()得到字段名;通过 getColumnIndex()转换成字段号;通过 getString(),getInt()等方法得到给定字段当前记录的值;通过 requery()方法重新执行查询得到游标;通过 close()方法释放游标资源;使用游标使用游标删除数据:删除数据也是一件很简单的事,只需要调用delete方法,传入参数即可,delete(String table,String whereClause,String whereArgs)的参数三个参数具体含义如下:table:目标表名whereClause:whe
展开阅读全文