android数据库 之 sqlite数据库

上传人:第*** 文档编号:31310793 上传时间:2018-02-06 格式:DOC 页数:22 大小:342.43KB
返回 下载 相关 举报
android数据库 之 sqlite数据库_第1页
第1页 / 共22页
android数据库 之 sqlite数据库_第2页
第2页 / 共22页
android数据库 之 sqlite数据库_第3页
第3页 / 共22页
android数据库 之 sqlite数据库_第4页
第4页 / 共22页
android数据库 之 sqlite数据库_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《android数据库 之 sqlite数据库》由会员分享,可在线阅读,更多相关《android数据库 之 sqlite数据库(22页珍藏版)》请在金锄头文库上搜索。

1、Android 数据库 之 SQLite 数据库Android 数据库 一、关系型数据库 SQLIte每个应用程序都要使用数据,Android 应用程序也不例外, Android 使用开源的、与操作系统无关的 SQL 数据库 SQLite。SQLite 第一个 Alpha 版本诞生于 2000 年 5 月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百 K 的内存就够了。SQLite 已经被多种软件和产品使用,Mozilla FireFox 就是使用 SQLite 来存储配置数据的,Android 和 iPhone 都是使用 SQLite 来存储数据的。SQLite

2、 体系结构图如下: 编译器包括 Tokenizer(词法分析器)、 Parser(语法分析器)、Code Generator(代码产生器)。他们协同处理文本形式的结构化查询语句。后端由 B-tree,Pager , OS Interface 组成。B-tree 的职责是负责排序,维护多个数据库页之间错综复杂的关系,将页面组织成树状结构,页面就是树的叶子。 Pager 负责传输,根据 B-tree 的请求从磁盘读取页面或者写入页面。公共服务中有各种实用的功能比如:内存分配、字符串比较,Unicode 转换等。SQLite 数据库是 D.Richard Hipp 用 C 语言编写的开源嵌入式数据库

3、,支持的数据库大小为 2TB。它具有如下特征:1、轻量级SQLite 和 CS 模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用 SQLite 一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的尺寸也相当小。2、独立性SQLite 数据库的核心引擎本身不依赖第三方软件,使用它也不需要“安装”,所以在使用的时候能够省去不少麻烦。3、隔离性SQLite 数据库中的所有信息(比如表、视图、触发器)都包含在一个文件内,方便管理和维护。4、跨平台SQLite 数据库支持大部分操作系统,除了我们在电脑上使用的操作系统之外,很多手机操作系统同样可以运行

4、,比如 Android、Windows Mobile、Symbian、Palm 等。5、多语言接口SQLite 数据库支持很多语言编程接口,比如 CC+、Java、Python、dotNet、Ruby、Perl 等,得到更多开发者的喜爱。6、安全性SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。SQLite 官方网站(http:/www.sqlite.org),了解更多内容请前往。二、导出查看

5、数据库文件在 android 中,为某个应用程序创建的数据库,只有它可以访问,其它应用程序是不能访问的,数据库位于 Android 设备/data/data/package_name/databases文件夹中。想要将数据库文件导出可以使用 eclipse,如图所示: 查看数据库,使用 SQlite Database Browser,如图所示:三、扩展类3.1 扩展 SQLiteOpenHelperAndroid 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创

6、建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper 的子类,至少需要实现三个方法:构造函数,调用父类 SQLiteOpenHelper 的构造函数onCreate()方法;/ TODO 创建数据库后,对数据库的操作onUpgrage()方法。/ TODO 更改数据库版本的操作当你完成了对数据库的操作(例如你的 Activity 已经关闭),需要调用 SQLiteDatabase 的 Close() 方法来释放掉数据库连接。操作数据库

7、的最佳实践是创建一个辅助类,例如联系人模块class ContactsDatabaseHelper extends SQLiteOpenHelper3.2 Cursor 类Android 使用 Cursor 类返回一个需要的值,Cursor 作为一个指针从数据库查询返回结果集,使用 Cursor 允许 Android 更有效地管理它们需要的行和列,你使用ContentValues 对象存储键 /值对,它的 put()方法允许你插入不同数据类型的键值。3.3 数据类型SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型

8、,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifest typing.)。四、数据库操作4.1 创建和打开数据库在 Android 中创建和打开一个数据库都可以使用 openOrCreateDatabase 方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,如果不存在则创建一个数据库:创建成功则返回一个 SQL

9、iteDatebase 对象,否则抛出异常 FileNotFoundException。下面我们来创建一个名为 Test 的数据库,并返回一个 SQLiteDatabase 对象 mSQLiteDatabase。mSQLiteDatabase=this.openOrCreateDatabase(Test,MODE_PRIVATE,null);4.2 创建表通过 execSQL 方法来执行一条 SQL 语句。String CREATE_TABLE=create table 表名(列名,列名,);mSQLiteDatabase.execSQL(CREATE_TABLE); 创建表的时候总要确定一个

10、主键,这个字段是 64 位整型,别名_rowid 。其特点就是自增长功能。当到达最大值时,会搜索该字段未使用的值(某些记录被删除 _rowid 会被回收),所以要唯一严格增长的自动主键必须加入关键字 autoincrement。4.3 删除表mSQLiteDatabase(drop table 表名);4.4 修改数据4.4.1 插入记录可以使用 insert 方法来添加数据,但是 insert 方法要求把数据都打包到 ContentValues 中,ContentValues 其实就是一个 Map,Key 值是字段名称,Value 值是字段的值。通过 ContentValues 的 put

11、方法就可以把数据放到 ContentValues 对象中,然后插入到表中去。具体实现如下:ContentValues cv=new ContentValues();cv.put(TABLE_NUM,1);cv.put(TABLE_DATA,测试数据库数据);mSQLiteDatabase.insert(Test,null,cv);/同样可以使用 execSQL 方法来执行一条“插入“的 SQL 语句String INSERT_DATA=insert into 表名(列名, ) values (值,);mSQLiteDatabase.execSQL(INSERT_DATA);4.4.2 更新记录

12、ContentValues cv=new ContentValues();cv.put(TABLE_NUM,3);cv.put(TABLE_DATA,修改后数据);mSQLiteDatabase.update(Test,cv,num+=+rowId,null);/同样可以使用 execSQL 方法来执行一条“更新”的 SQL 语句String UPDATE_DATA=update 表名 set 列名=xxx where xxx;mSQLiteDatabase.execSQL(UPDATE_DATA);update 表名 set 列名=xxx where 条件4.4.3 删除记录/要删除数据可以

13、使用 delete 方法mSQLiteDatabase.delete(Test,WHERE _id=+0,null);/也可以通过 execSQL 方法执行 SQL 语句删除数据mSQLiteDatabase.execSQL(delete from 表名 where 条件);4.5 查询SELECT 列名 FROM 表名 WHERE 条件例如在联系人中保存 3 个联系人,data 表如下: 查询 data1 值为 10086 的项对查询条件和返回值稍做修改LIKE 的使用Like 经常和 %或者 _ 搭配使用。%可与任意 0 个或者多个字符匹配,_可与任意单个字符匹配。 GLOB 的使用Glo

14、b 与 like 非常相似,常与 * 搭配。限定和排序关键字:order、limit 、offset。Order 分为 asc(默认升序), desc(降序)。限定个数指定偏移内连接:通过表中两个字段进行连接,找出两个集合的交集。select xxx from 表名 1 inner join 表名 2 on 表名 1.列名 = 表名 2.列名左外连接:左表的所有项和内连接项。select xxx from 表名 1 left outer join 表名 2 on 表名 1.列名 = 表名 2.列名 五、高级特性5.1 视图视图是虚拟表,它的内容都派生自其它表的查询结果。虽然它看起来像基本表,但

15、是它不是,因为基本表的内容是持久的,而视图的内容是使用时动态产生的。create view 表名 as 定义5.2 索引索引是一种用来在某种条件下加速查询的结构。create index 索引名 on 表名(列名)5.3 触发器触发器的作用是当具体的表发生特定的数据事件时,执行对应的操作。create trigger 触发器名 before|after insert|delete|update|update of columns on 表名 action首先还谢谢是提供底稿的同事,这里只是介绍了基础的东西,感兴趣的同学,请 SQLite 官方网站(http:/www.sqlite.org)了解。这里提供一个博客园的博客在 Android 中查看和管理 sqlite 数据库具体地址:http:/ data/data 这个目录是需要 root 权限的;2. adb shell 进入手机后,不是每个手机都能找到 sqlite3 这个命令的。至少说我们拿到的工程样机里面就没有。 您可能也喜欢:Android 数据库 之 SQLite 数据库学习 Oracle 数据库( 3)-SELECT 语句学习 Oracle 数据库( 2)-SQLPLUS 介绍学习 Oracle 数据库( 1)-写在前面的话学习 Oracle 数据库( 4)在表上建立不同

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

当前位置:首页 > 中学教育 > 其它中学文档

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