手机版

安卓开发的SQLIte数据库简介

时间:2021-08-03 来源:互联网 编辑:宝哥软件园 浏览:

类型:编程助手大小:7.0M语言:中文评分:8.5标签:立即下载安卓数据库

1.关系数据库SQLIte

每个应用都使用数据,安卓应用也不例外。Android使用——SQLite,一个独立于操作系统的开源SQL数据库。SQLite的第一个Alpha版本诞生于2000年5月。它是一个轻量级的数据库,其设计目标是嵌入式的。它占用的资源非常少,只需要几百K的内存。SQLite已经被多种软件和产品使用,Mozilla FireFox使用SQLite存储配置数据,Android和iPhone都使用SQLite存储数据。

SQLite架构图如下:

编译器包括标记器、解析器和代码生成器。它们一起工作来处理文本形式的结构化查询语句。

后端由B树、寻呼机和操作系统接口组成。B-tree负责排序,维护多个数据库页面之间的复杂关系,将页面组织成树形结构,页面就是树的叶子。传呼机负责传输,根据B-tree的请求从磁盘读取页面或写入页面。

公共服务中有各种实用的功能,比如内存分配、字符串比较、Unicode转换等等。

SQLite数据库是D.Richard Hipp用C语言编写的开源嵌入式数据库,支持的数据库大小为2TB。它具有以下特点:

1.轻量级选手

SQLite不同于C\S模式下的数据库软件,因为是进程内的数据库引擎,所以没有数据库的客户端或服务器。要使用SQLite,你只需要带一个它的动态库就可以享受它的所有功能。动态库的规模非常小。

2.独立性自立性

SQLite数据库的核心引擎本身不依赖第三方软件,也不需要安装,使用起来可以省去很多麻烦。

3.隔离

SQLite数据库中的所有信息(如表、视图、触发器)都包含在一个文件中,便于管理和维护。

4.跨平台

SQLite数据库支持大多数操作系统。除了我们在电脑上使用的操作系统,很多手机操作系统也可以运行,比如安卓、Windows Mobile、Symbian、Palm等等。

5.多语言界面

SQLite数据库支持多种语言编程接口,如C\C、Java、Python、dotNet、Ruby、Perl等。这受到了更多开发者的喜爱。

6.安全

SQLite数据库通过数据库级的排他和共享锁实现独立的事务处理。这意味着多个进程可以同时从同一个数据库中读取数据,但只有一个进程可以写入数据。在进程或线程可以写入数据库之前,它必须获得排他锁。发出排他锁后,其他读或写操作将不会再次发生。

其次,导出和查看数据库文件

在安卓系统中,为一个应用程序创建的数据库只能被它访问,而不能被其他应用程序访问。数据库位于Android设备/数据/数据/package _ name/databases的文件夹中。

如果想要导出数据库文件,可以使用eclipse,如图所示:

检查数据库并使用SQlite数据库浏览器,如图所示:

第三,延伸类

3.1扩展SQLiteOpenHelper

安卓不会自动提供数据库。要在安卓应用程序中使用SQLite,您必须创建自己的数据库,然后创建表、索引和填充数据。安卓提供了SQLiteOpenHelper来帮助你创建一个数据库。您可以通过继承SQLiteOpenHelper类轻松创建数据库。SQLiteOpenHelper类封装了根据开发应用程序的需要创建和更新数据库的逻辑。SQLiteOpenHelper的子类至少需要实现三种方法:

构造函数,调用父类SQLiteOpenHelper的构造函数

OnCreate()方法;//创建数据库后对数据库的操作

OnUpgrage()方法。//TODO更改数据库版本的操作

当您完成对数据库的操作时(例如,您的活动已经关闭),您需要调用SQLiteDatabase的close()方法来释放数据库连接。

操作数据库的最佳实践是创建一个辅助类,如联系模块

类ContactsDatabaseHelper扩展了SQLiteOpenHelper

3.2光标类别

安卓使用Cursor类返回一个需要的值,Cursor作为指针返回数据库查询的结果集。使用Cursor可以让Android更有效地管理他们需要的行和列。您使用ContentValues对象来存储键/值对,它的put()方法允许您插入不同数据类型的键值。

3.3数据类型

SQLite和其他数据库最大的区别在于它对数据类型的支持。创建表时,可以在CREATE TABLE语句中指定列的数据类型,但是可以将任何数据类型放入任何列中。当一个值被插入到数据库中时,SQLite会检查它的类型。如果类型与关联的列不匹配,SQLite会尝试将值转换为列的类型。如果无法转换,该值将作为其自己的类型存储。例如,您可以将一个字符串放入INTEGER列。SQLite称之为“清单类型”。

四.数据库操作

4.1创建和打开数据库

OpenOrCreateDatabase方法可以用来在Android中创建和打开一个数据库,因为它会自动检测这个数据库是否存在,如果存在就打开它,如果不存在就创建一个数据库:如果创建成功,它会返回一个SQLiteDatebase对象,否则会抛出一个异常FileNotFoundException。

让我们创建一个名为Test的数据库,并返回一个SQLiteDatabase对象mSQLiteDatabase。

msqliteddatabase=this . openorcreatedatabase(' Test ',MODE_PRIVATE,null);

4.2创建表格

通过execSQL方法执行一条SQL语句。

String create _ table='创建表名(列名、列名、…)';msqliteddatabase . exec SQL(CREATE _ TABLE);

创建表时,必须确定主键。该字段是一个64位整数,别名为rowid。其特点是自我成长功能。当达到最大值时,将搜索该字段未使用的值(某些记录将被删除_rowid将被回收),因此必须将关键字autoincrement添加到唯一严格增长的自动主键中。

4.3删除表格

msqliteddatabase(' drop table表名');

4.4修改数据

4.4.1插入记录

可以使用insert方法添加数据,但是insert方法需要将所有数据打包到ContentValues中,content values实际上是一个Map,Key Value是字段名,Value值是字段值。使用ContentValues的put方法,您可以将数据放入ContentValues对象,并将其插入到表中。具体实现如下:

content values cv=new content values();cv.put(TABLE_NUM,1);Cv.put(TABLE_DATA,‘测试数据库数据’);插入(测试,空,cv);execSQL方法也可用于执行“INSERT”SQL语句String INSERT _ DATA=' INSERT in table name(列名,…) values(值,…)';msqliteddatabase . exec SQL(INSERT _ DATA);

4.4.2更新记录

content values cv=new content values();cv.put(TABLE_NUM,3);Cv.put(TABLE_DATA,‘修改数据’);msqliteddatabase . update(Test,cv,' num' '=' rowId,null);execSQL方法也可以用来执行“UPDATE”SQL语句String UPDATE_DATA='update表名集列名=xxx其中XXX;msqliteddatabase . exec SQL(UPDATE _ DATA);

更新表名集列名=XXX[其中条件]

4.4.3删除记录

//要删除数据,可以使用delete方法msqliteddatabase . delete(' test ','其中_ id=' 0,null);//也可以通过execSQL方法执行SQL语句删除数据msqlitedatabase.execsql('从条件所在的表名中删除');

4.5询问

从表名中选择列名条件

例如,在联系人中保存3个联系人,数据表如下:

查询data1值为10086的项目

稍微修改查询条件和返回值

LIKE的使用

Like常用于%或_。

%可以匹配任何0个或更多字符,而_可以匹配任何单个字符。

GLOB的使用

Glob与like非常相似,经常与*配对。

限定和排序

关键词:订单、限额、抵销。

顺序分为asc(默认升序)和desc(降序)。

少数

指定偏移量

内部连接:连接表中的两个字段来查找两个集合的交集。

从表名1的内部联接表名2中选择xxx。列名=表名2。列名

左外联接:左表的所有项和内联接项。

从表名1的左外部联接表名2中选择xxx。列名=表名2。列名

动词(verb的缩写)高级功能

5.1视图

视图是一个虚拟表,它的内容来自其他表的查询结果。虽然它看起来像一个基本表,但它不是,因为基本表的内容是持久的,而视图的内容是在使用它时动态生成的。

创建视图表名作为定义

5.2指数

索引是在一定条件下用来加快查询速度的结构。

在表名(列名)上创建索引名

5.3触发

触发器的作用是在特定的表中发生特定的数据事件时,执行相应的操作。

在表名操作上创建触发器触发器名称[前|后][插入|删除|更新|列更新]

版权声明:安卓开发的SQLIte数据库简介是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。