Android移动应用开发技术与实践课件-数据库与存储技术

上传人:sat****105 文档编号:325451884 上传时间:2022-07-18 格式:PPT 页数:77 大小:4.88MB
返回 下载 相关 举报
Android移动应用开发技术与实践课件-数据库与存储技术_第1页
第1页 / 共77页
Android移动应用开发技术与实践课件-数据库与存储技术_第2页
第2页 / 共77页
Android移动应用开发技术与实践课件-数据库与存储技术_第3页
第3页 / 共77页
Android移动应用开发技术与实践课件-数据库与存储技术_第4页
第4页 / 共77页
Android移动应用开发技术与实践课件-数据库与存储技术_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《Android移动应用开发技术与实践课件-数据库与存储技术》由会员分享,可在线阅读,更多相关《Android移动应用开发技术与实践课件-数据库与存储技术(77页珍藏版)》请在金锄头文库上搜索。

1、第第7 7章章 数据库与存储技术数据库与存储技术7第第7 7章章 数据库与存储数据库与存储技术技术第章本章内容本章内容7.1 SQLite7.1 SQLite数据库概述数据库概述7.27.2数据库操作数据库操作7.3 SharedPreferences7.3 SharedPreferences存储存储7.4 文件存储方式文件存储方式实例实例 课后习题课后习题7.1 SQLite7.1 SQLite数据数据库概述概述vSQLite是一个软件库,是一种实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite是一个用户增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无

2、关。SQLite完全免费,因此深受光大企业和科研机构人事喜好,SQLite引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite直接访问其存储文件。7.1 SQLite7.1 SQLite数据数据库概述概述1.SQLite命令与关系数据库进行交互的标准 SQLite 命令类似于 SQL。命令包括 CREATE、SELECT、INSERT、UPDATE、DELETE 和 DROP。这些命令基于它们的操作性质可分为以下几种:表7-1 DDL-数据定义语言命令说明CREATE创建一个新的表,一个表的视图,或者数据库中的其他对象ALTER修改数据库中某个已有数据对象,比如一个表DR

3、OP删除整个表,或者表的视图,或者数据库中的其他对象 7.1 SQLite7.1 SQLite数据数据库概述概述 命令说明INSERT创建一个记录UPDATE修改记录DELETE删除记录表7-2 DML-数据操作语言 命令说明7.1 SQLite7.1 SQLite数据数据库概述概述 命令说明INSERT创建一个记录UPDATE修改记录DELETE删除记录表7-2 DML-数据操作语言 命令说明7.27.2数据数据库操作操作v当我们想要使用数据库开发的时候,Android为了使我们更加方便的开发,为我们提供了SQLiteOpenHelper帮助类,借助它我们可以方便而简单的创建和升级数据库。S

4、QLiteOpenHelper是一个抽象类,这意味着如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。SQLiteOpenHelper中有两个抽象方法,分别是onCreate()和onUpgrade()。7.27.2数据数据库操作操作7.27.2数据数据库操作操作v7.2.1打开或创建数据库v在Android中使用SQLiteDatabase的静态方法openOnCreateDatabase(Stringpath,SQLiteDatabaseCursorFactoryfactory)来打开或创建一个数据库,它可以自动检测此数据库是否存在,存在打开,不存在创建一个数据库。下面代码是创建

5、名为testData.db和名为test的数据表:v【实例7-1】数据库表的创建:vprotectedvoidonCreate(BundlesavedInstanceState)vsuper.onCreate(savedInstanceState);vsetContentView(R.layout.activity_main);vgetOverflowMenu();vSQLiteDatabasedata=this.openOrCreateDatabase(testData.db,OPEN_READWRITE,null);vtryvStringSQL_CT=CREATETABLEtest(dat

6、aTEXT,_idINTEGER);vdata.execSQL(SQL_CT);vcatch(Exceptione)vvv数据库表达创建代码片段如上所示,在数据库表的创建中,通过openOrCreateDatabase来打开或创建一个数据库,返回SQLiteDatabase对象,该方法的有三个参数列表。openOrCreateDatabase(Stringname,int*mode,SQLiteDatabase.CursorFactoryfactory),其中name参数表示所创建或打开的数据库名称,mode为数据库的使用权限,该权限有三种使用方法,其中MODE_PRIVATE为本应用程序私有

7、,使用该属性时,所创建的数据库只能本程序调用,其它程序无法调用,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE分别为全局可读和可写。factory可以用来实例化一个cusor对象的工厂类,一般设置为null即可。v在数据库创建好后便可以使用SQL语句向数据库中添加数据,首先将创建表的SQL语句存储在String变量中,然后使用data变量调用execSQL方法进行操作。execSQL方法用来执行SQL代码,也就是说执行你在前面创建的String中所编写好的SQL语句。此方法在Query组建中,Query组件还有一个Open方法,也是用来执行SQL代码的,但二者

8、之间有不同之处:Open方法只能用来执行SQL语言的查询语句(Select命令),并返回一个查询结果集。execSQL方法除了可执行Select语句外还可执行其它SQL语句(如Update、Insert、Delete等),此方法不返回执行的结果。在选择时使用execSQL即可。v在使用execSQL时,一定要使用trycatch(exceptione)语句进行出错异常处理否则在运行中可能出现异常而导致数据插入失败。7.27.2数据数据库操作操作v7.2.2添加数据v对数据库操作无非四种,即CRUD,每一种操作都都对应一种SQL命令,添加数据时,在SQLiteDatabase中提供了insert

9、(Stringtable,StringnullColumnHack,ContentValuesvalues)方法,这个方法中table参数为表的名称(即要向哪张表中添加数据,这里就传入它的名字),nullColumnHack参数是空列的默认值(在未指定添加数据的情况下给某些可为空的列自动赋值null,一般不使用这个功能,直接传入null即可),values参数是ContentValues类型的一个封装了列和名称的Map,它提供了一系列put()方法重载,用于向ContentValues中添加数据,只需要把表中每个列名以及相对应的待添加数据传入即可。除此之外,还可以使用execSQL方法对数据进

10、行插入,建议使用该方法进行添加数据,实例7-2介绍如何使用此方法。v【实例7-2】添加数据v在数据插入之前,需要在创建一个数据库,否则将无法插入数据,本实例在实例7-1所创的表的基础上进行数据的添加,数据库以及表的创建如实例7-1所示。vtryvStringSQL_Insert=INSERTINTOtest(data)values(MI8se);vdata.execSQL(SQL_Insert);vSQL_Insert=INSERTINTOtest(data)values(huaweip20);vdata.execSQL(SQL_Insert);vSQL_Insert=INSERTINTOte

11、st(data)values(oppoR15);vdata.execSQL(SQL_Insert);vcatch(Exceptione)v7.27.2数据数据库操作操作【程序说明】:在本实例中,首先将插入数据的SQL语句放在一个String的变量中。使用data调用execSQL执行SQL语句,在此一个该注意的是参数应该和所创建的表中的参数相对应,否则可能会出现错误。7.27.2数据数据库操作操作v7.2.3数据的删除v1.删除数据v同样数据删除也有两种方法,SQLiteDatabase提供了delete(Stringtable,StringwhereClause,StringwhereArg

12、s)方法,此方法table参数表示数据库表的名称,whereClause参数表示删除条件,whereArgs参表示的是删除条件值的数组。第二种方法依然是使用前面的execSQL()方法。本实例依旧使用次方法。v【实例7-3】数据库表中数据的删除v本实例在操作前依然需要保证数据库表中存在数据,这里依然是在前面两个实例的基础上对数据进行操作。vpublicvoiddeleteData(StringitemData)vStringBuffersb=newStringBuffer();vsb.append(DELETEFROMtestWHEREdata=);vsb.append(itemData);v

13、sb.append();vSQLiteDatabasedata=this.openOrCreateDatabase(testData.db,OPEN_READWRITE,null);vtryvdata.execSQL(sb.toString();vcatch(Exceptione)vToast.makeText(MainActivity.this,e.toString(),Toast.LENGTH_LONG).show();vvv运行结果如图7-2所示7.27.2数据数据库操作操作【程序说明】:这里面我们先初始化一个StringBuffer的对象sb,并调用append方法用于传递做删除操作的

14、SQL语句。初始化一个SQLiteDatabase对象data,并调用data的execSQL()方法来执行删除操作的SQL语句,如果操作不成功则抛出异常。在MainActivity.java中编写长按事件,长按想要删除的数据,选中了MI8SE,成功将其删除,7.27.2数据数据库操作操作v7.2.4数据的修改v修改数据的方法有两种:(1)调用SQLiteDatabase的update(Stringtable,ContentValuesvalues,StringwhereClause,StringwhereArgs)方法。参数一跟insert()相同也是表名,参数二是ContentValues

15、对象,要把更新的数据装进去,参数三是更新条件,参数四是更新条件数组。(2)编写更新语句,调用execSQL()执行更新。下列代码为更新数据代码。v【实例7-4】修改数据vpublicvoidmodifyData(StringitemData,StringuserData)vStringBuffersb=newStringBuffer();vsb.append(UPDATEtestSETdata=);vsb.append(userData);vsb.append(WHEREdata=);vsb.append(itemData);vsb.append();vSQLiteDatabasedata=t

16、his.openOrCreateDatabase(testData.db,OPEN_READWRITE,null);vtryvdata.execSQL(sb.toString();vcatch(Exceptione)vToast.makeText(MainActivity.this,e.toString(),Toast.LENGTH_LONG).show();vvv运行结果如图7-37-4所示7.27.2数据数据库操作操作图7-4运行后结果【程序说明】:这里跟删除操作差不多,先初始化一个用于储存SQL语句的StringBuffer的对象,并且使用append()方法将SQL操作传进去。初始化一个SQLiteDatabase的对象data,如果不成功抛出异常。长按选中要修改的数据点击修改,将oppoR15改成vivo。7.27.2数据数据库操作操作7.2.5数据的查询在Android中查询操作要使用Cursor,我们使用SQLiteDatabase.query()方法时,就会得到Cursor对象,Cursor是SQLite 数据库查询返回的行数集合,Cursor是一个游标接口,提供了遍历

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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