数据存储与访问课件

上传人:我*** 文档编号:144765624 上传时间:2020-09-14 格式:PPT 页数:49 大小:339KB
返回 下载 相关 举报
数据存储与访问课件_第1页
第1页 / 共49页
数据存储与访问课件_第2页
第2页 / 共49页
数据存储与访问课件_第3页
第3页 / 共49页
数据存储与访问课件_第4页
第4页 / 共49页
数据存储与访问课件_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《数据存储与访问课件》由会员分享,可在线阅读,更多相关《数据存储与访问课件(49页珍藏版)》请在金锄头文库上搜索。

1、Android数据存储与访问,回顾,ListView控件 TabHost控件 AutoCompleteTextView控件,本章目标,Android数据存储 简单存储 文件存储 数据库存储 数据共享 创建数据提供者 使用数据提供者,简单存储,SharedPreferences SharedPreferences是一种轻量级的数据保存方式 通过SharedPreferences可以将NVP(Name/Value Pair,名称/值对)保存在Android的文件系统中,而且SharedPreferences完全屏蔽的对文件系统的操作过程 开发人员仅是通过调用SharedPreferences对NV

2、P进行保存和读取 使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/shared_prefs目录下,简单存储,简单存储,ShareDemoActivity.java (存入数据) SharedPreferences sharedPreferences = getSharedPreferences(“test”, Context.MODE_PRIVATE);Editor editor = sharedPreferences.edit();/获取编辑器editor.putString(“name”, “刘德华);editor.putInt

3、(age, 4);mit();/提交修改,简单存储,访问SharedPreferences中的数据代码如下:SharedPreferences sharedPreferences = getSharedPreferences(“test, Context.MODE_PRIVATE);/getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值String name = sharedPreferences.getString(name, );int age = sharedPreferences.getInt(age, 1);,简单存储,访问其他应用中的Pr

4、eference,简单存储,访问其他应用中的Preference Context otherAppsContext = createPackageContext(cn.itcast.action, Context.CONTEXT_IGNORE_SECURITY);SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences(itcast, Context.MODE_WORLD_READABLE);String name = sharedPreferences.getString(name, );int a

5、ge = sharedPreferences.getInt(age, 0); 如果不通过创建Context访问其他应用的preference,可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:File xmlFile = new File(“/data/data/shared_prefs/itcast.xml”);/应替换成应用的包名,文件存储,Android使用的是基于Linux的文件系统,程序开发人员可以建立和访问程序自身的私有文件,也可以访问保存在资源目录中的原始文件和XML文件,还可以在SD卡等外部存储设备中保存文件 内部存储 Android系统允许应用

6、程序创建仅能够自身访问的私有文件,文件保存在设备的内部存储器上,在Linux系统下的/data/data/files目录中 Android系统不仅支持标准Java的IO类和方法,还提供了能够简化读写流式文件过程的函数,文件存储,String con=context.getText().toString(); try FileOutputStream fileOutputStream=FiletestActivity.this.openFileOutput(a.txt, Context.MODE_PRIVATE); fileOutputStream.write(con.getBytes(); f

7、ileOutputStream.flush(); catch (FileNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); ,文件存储,getCacheDir()方法用于获取/data/data/cache目录getFilesDir()方法用于获取/data/data/files目录,文件存储,把文件放入SD卡 在程序中访问SDCard,你需要

8、申请访问SDCard的权限。 在AndroidManifest.xml中加入访问SDCard的权限如下: 若未设置权限提示找不到文件错误,文件存储,要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。 /上面两句代码可以合成一句: File saveFile = new File(/sdcard/a.txt);,if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) File sdCardDir = Environment.getExternalStorageDirec

9、tory();/获取SDCard目录 File saveFile = new File(sdCardDir, “a.txt”); FileOutputStream outStream = new FileOutputStream(saveFile); outStream.write(test.getBytes(); outStream.close(); ,SQLite数据库简介1,SQLite数据库 SQLite是一个开源的嵌入式关系数据库,在2000年由D. Richard Hipp发布 SQLite数据库特点 更加适用于嵌入式系统,嵌入到使用它的应用程序中 占用非常少,运行高效可靠,可移植

10、性好 提供了零配置(zero-configuration)运行模式 SQLite数据库不仅提高了运行效率,而且屏蔽了数据库使用和管理的复杂性,程序仅需要进行最基本的数据操作,其他操作可以交给进程内部的数据库引擎完成,SQLite数据库简介2,SQLite数据库 SQLite数据库具有很强的移植性,可以运行在Windows,Linux,BSD,Mac OS X和一些商用Unix系统,比如Sun的Solaris,IBM的AIX SQLite数据库也可以工作在许多嵌入式操作系统下,例如QNX,VxWorks,Palm OS,Symbin和Windows CE SQLite的核心大约有3万行标准C代码

11、,模块化的设计使这些代码更加易于理解,SQLite数据库简介3,SQLite数据库 SQLite数据库采用了模块化设计,由8个独立的模块构成,这些独立模块又构成了三个主要的子系统,模块将复杂的查询过程分解为细小的工作进行处理,代码建库,代码建库 在代码中动态建立数据库是比较常用的方法 在程序运行过程中,当需要进行数据库操作时,应用程序会首先尝试打开数据库,此时如果数据库并不存在,程序则会自动建立数据库,然后再打开数据库 在编程实现时,一般将所有对数据库的操作都封装在一个类中(该类继承至SQLiteOpenHelper),因此只要调用这个类,就可以完成对数据库的添加、更新、删除和查询等操作 SQ

12、LiteOpenHelper提供的功能 1:getReadableDatabase(),gerWritableDatabase()可以获取SQLiteDatabase对象,通过该对象进行相关操作 2:提供onCreate()和onUpgrade两个回调函数,允许我们在创建和升级数据库时,进行,代码建库,public class DataBase extends SQLiteOpenHelper private static final String KEY_STUNO=stuno; private static final String KEY_NAME=name; private stati

13、c final String KEY_AGE=age; private static final String KEY_SEX=sex; private static final String DB_TABLE=stu; private static final String DATABASE_NAME=data.db; private static final int VERSION = 1; public DataBase(Context context) super(context, DATABASE_NAME,null, VERSION); public void onCreate(S

14、QLiteDatabase db) /对数据库进行初始化 System.out.println(数据库已经创建); db.execSQL(create table stu(stuno int,name varchar(20),age int,sex varchar(20); public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) /更新数据库 System.out.println(数据库已经更新); ,数据操作,数据操作 SQLiteDatabase类的公共函数insert()、delete()、upda

15、te()和query(),封装了执行的添加、删除、更新和查询功能的SQL命令 下面分别介绍如何使用SQLiteDatabase类的公共函数,完成数据的添加、删除、更新和查询等操作,数据操作,数据操作 添加功能 首先构造一个ContentValues对象,然后调用ContentValues对象的put()方法,将每个属性的值写入到ContentValues对象中,最后使用SQLiteDatabase对象的insert()函数,将ContentValues对象中的数据写入指定的数据库表中 insert()函数的返回值是新数据插入的位置,即ID值。ContentValues类是一个数据承载容器,主要

16、用来向数据库表中添加一条数据,数据操作,数据操作 第4行代码向ContentValues对象newValues中添加一个名称/值对,put()函数的第1个参数是名称,第2个参数是值 在第8行代码的insert()函数中,第1个参数是数据表的名称,第2个参数是在NULL时的替换数据,第3个参数是需要向数据库表中添加的数据,数据操作,数据操作 删除功能 删除数据比较简单,只需要调用当前数据库对象的delete()函数,并指明表名称和删除条件即可 delete()函数的第1个参数是数据库的表名称,第2个参数是删除条件 在第3行代码中,删除条件为null,表示删除表中的所有数据 第6行代码指明了需要删除数据的id值,因此deleteOneData()函数仅删除一条数据,此时delete()函数的返回值表示被删除的数据的数量,数据操作,数据操作 更新功能 更新数据同样要使用ContentValues对象,首先构造ContentValues对象,然后调用put()函数将属性的值写入到ContentValues对象中,最后使用SQLite

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号