2022年Android数据库技术[归 .pdf
《2022年Android数据库技术[归 .pdf》由会员分享,可在线阅读,更多相关《2022年Android数据库技术[归 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、mo-Android 感受Android带给我们的新体验Android数据库技术Android SQLite解析ContentResolverContentProviderAndroid 数据存储(总结篇)Android SQLite解析说到 SQLite,无论 C+、Java 程序员还是其他的非主流程序员,应该都听说过它,可见其非常流行。SQLite是轻量级的、嵌入式的、关系 型数据库,目前已经在 iPhone、Android 等手机系统中使用,而且被其他的公司广泛使用,比如说:Adobe,具体 SQLite 的介绍可以到其 官方网站 浏览。在学习 Android SQLite前,必须对 S
2、QL语句有很深入的了解(如果忘记了,利用这次机会好好复习下)。关于数据库、表的创建等基础知识,由于篇幅有限就不在此详细说 明,主要说明数据库的4 大基本操作:添加(insert)、删除(delete)、查询(query)、修改(update),这是在学习Android SQLite 的过程中最为关注的部分。除了这 4 大操作以外,我们还需要注意的地方就是:获取查询结果的记录集(Recordset)。Android SQLite分析 等有了这些基本概念,再来学习Android SQLite,从 Android SDK 中摘要如下:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 14
3、 页 -mo-Android 感受Android带给我们的新体验首先关注到的是SQLiteDatabase 类,在 Android SDK 中看其详细说明,其主要接口如下:返回值函数原型longinsert(String table,String nullColumnHack,ContentValues values)Convenience methodfor inserting a row into the database.Intdelete(String table,String whereClause,String whereArgs)Convenience method fordel
4、eting rows in the database.Cursorquery(String table,Stringcolumns,String selection,StringselectionArgs,StringgroupBy,String having,String orderBy,String limit)Query the given table,returning aCursor over the result set.Intupdate(Stringtable,ContentValuesvalues,StringwhereClause,StringwhereArgs)Conve
5、nience method for updating rows in the database.看到这些是不是感到似曾相识了?不错,这就是数据库的4 大基本操作:添加(insert)、删除(delete)、查询(query)、修改(update)。感觉轻松很多了,再仔细看下这些函数的参数,发现很多参数都是按照SQL语句定义的,例如:select*from p_employee where id 9999 order by id asc 需要额外说明 2 个数据结构:ContentValues,Cursor;ContentValues 就相当于 C+中的 map(String key,Integ
6、er value),其主要接口包括 put(),get()。再结合insert操作的主要目的:按照表中数据段将对名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 14 页 -mo-Android 感受Android带给我们的新体验应的数据项写入到表中,就可以看出来 ContentValues主要是存放表中每个表的数据段,以及其对应的值。Cursor 也就是前面说的:查询结果的记录集。从记录集的特征可以想到其包含的操作应该有:MoveFirst()、MoveLast()、MoveNext()、Move()、IsLast()、GetColumns()等,而且它还是个抽象类abstrac
7、t class,SQLiteCursor就是其具体的实现。关于 SQLiteDatabase 类,其他值得关注的函数是:Create()、execSQL()。至于其他的函数,比如beginTransaction(),endTransaction()等关于数据库同步操作的函数,就只有在使用的过程中深入了解。额外补充说明 最后值得一提的是:一个很好的辅助类SQLiteOpenHelper,其简化了数据库的操作。按照 Android SDK 文档中的说明,也可以通过继承此类、改写其接口的方法来实现对数据库的操作,SQLiteOpenHelper,其主要接口如下:仔细分析其说明,发现这个类主要是创建一
8、个数据库,并对数据库的版本进行管理。当在程序中调用这个类的方法 getWritableDatabase()或者getReadableDatabase()方法的时候,如果当时没有数据库,那么Android 系统就 会自动创建一个数据数据库。其他辅助说明 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 14 页 -mo-Android 感受Android带给我们的新体验所有的数据库文件存放在手机中的/data/data/package_name/databases 路径下。最为重要的一点是:在 Android 中,所有的应用软件的数据(包括文件、数据库)为该应用软件所私有的,如果需要
9、在不同的应用中共享数据,必须使用ContentProvider实现,一个ContentProvider 类实现了一组标准的方法接口,从而能够让其他的应用保存或读取此ContentProvider 的各种数据类型。为了方便测试,如何查看SQLite数据库的内容?使用Android SDK提供的工具:sqlite3.exe。这是一个命令行实用工具,列举主要使用的命令如下:查看表结构sqlite3“path”.dump例如G:androidandroid sdk windowtoolssqlite330m.db3.bump,运行结构如下:BEGGINTRANSACTION;CREATE TABLET
10、mProgramm(index INTEGER,nIDINTEGER,nChannelIDINTEGER,strTitleCHAR(255),dwDuration INTEGER,strThumbNail CHAR(1024),strURLCHAR(255),strPathNameCHAR(255),strAuthor CHAR(255),dwSizeINTEGER,StateINTEGER,PercentINTEGER,strConverted CHAR(255),dwVideoType INTEGER,dwDownloadedBytesINTEGER,strTimeCHAR(255),st
11、rHTTPVersion CHAR(255),strUserAgent CHAR(255),strReferer CHAR(255);COMMIT;这就是当初创建数据库的语句查看表中的内容sqlite3“path”.schema具体运行结果可以下载数据库文件30m.db3,在命令行中运行就可以看到了其他帮助命令查询sqlite3.help总结说明 通过对以上的学习,简单写了个数据库的例子(moandroid.database.zip),大家可以参考下。相关文章 Activity、Intent 深入解析Android 实现联网(一)package说明Android 画图学习总结(一)类的简介Co
12、cos2dAndroid 移植手记(一)OpenglES创建流程Android SDK深入解析 Application Components名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 14 页 -mo-Android 感受Android带给我们的新体验Android 应用程序之间数据共享 ContentResolverAndroid 是如何实现应用程序之间数据共享的?一个应用程序可以将自己的数据完全暴露出去,外界更本看不到,也不用看到这个应用程序暴露的数据 是如何存储的,或者是使用数据库还是使用文件,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接
13、口和这个程序里的数据打交 道,例如:添加(insert)、删除(delete)、查询(query)、修改(update),当然需要一定的权限才可以。如何将应用程序的数据暴露出去?Android提供了 ContentProvider,一个程序可以通过实现一个Content provider的抽象接口将自己的数据完全暴露出去,而且 Content providers是以类似数据库中表的方式将数据暴露。Content providers存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。要想使应用程序的数据公开化,可通过2 种 方法:创建一个属于你自己的Conte
14、nt provider或者将你的数据添加到一个已经存在的 Content provider中,前提是有相同数据类型并且有写入Content provider的权限。如何通过一套标准及统一的接口获取其他应用程序暴露的数据?Android提供了 ContentResolver,外界的程序可以通过ContentResolver接口访问ContentProvider提供的数据。当前篇主要说明,如何获取其它应用程序共享的数据,比如获取Android 手机电话薄中的信息。什么是 URI?在学习如何获取 ContentResolver前,有个名词是必须了解的:URI。URI是网络资源的定义,在Android
15、 中赋予其更广阔的含义,先看个例子,如下:将其分为 A,B,C,D 4 个部分:A:标准前缀,用来说明一个Content Provider控制这些数据,无法改变的;B:URI 的标识,它定义了是哪个Content Provider提供这些数据。对于第三方应用程序,为了保证 URI标识的唯一性,它必须是一个完整的、小写的 类名。这个标识在 元素的 authorities属性中说明:C:路径,Content Provider使用这些路径来确定当前需要生什么类型的数据,名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 14 页 -mo-Android 感受Android带给我们的新体验U
16、RI中可能不包括路径,也可能包括多个;D:如果 URI中包含,表示需要获取的记录的ID;如果没有 ID,就表示返回全部;由于 URI 通常比较长,而且有时候容易出错,切难以理解。所以,在Android当中定义了一些辅助类,并且定义了一些常量来代替这些长字符串,例如:People.CONTENT_URI ContentResolver 介绍说明 看完这些介绍,大家一定就明白了,ContentResolver是通过 URI来查询ContentProvider中提供的数据。除了URI以 外,还必须知道需要获取的数据段的名称,以及此数据段的数据类型。如果你需要获取一个特定的记录,你就必须知道当前记录的
17、ID,也就是 URI中 D部分。前面也提到了 Content providers是以类似数据库中表的方式将数据暴露出去,那么 ContentResolver也将采用类似数据库的操作来从Content providers中获取数据。现在简要介绍ContentResolver的主要接口,如下:返回值函数声明final Uriinsert(Uri url,ContentValues values)Inserts a row into a table at thegiven URL.final intdelete(Uriurl,Stringwhere,StringselectionArgs)Delet
18、esrow(s)specified by a content URI.final Cursorquery(Uri uri,String projection,String selection,String selectionArgs,String sortOrder)Query the given URI,returning a Cursor over the resultset.final intupdate(Uriuri,ContentValuesvalues,Stringwhere,StringselectionArgs)Update row(s)in a content URI.看到这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Android数据库技术归 2022 Android 数据库技术
限制150内