Android学习笔记034之数据存储—SQLite数据库

  前面我们介绍了Android数据存储的两种方法:文件存储和SharedPreference存储,这一篇我们来学习一下Android存储数据的另外一种方式——SQLite数据库存储。

1、SQlite数据库简介

  现在的主流移动智能设备中,比如Android手机、iPhone手机,平板等都是使用SQLite数据库作为存储复杂数据的存储引擎。那么什么是SQLite数据库呢?

  SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎,它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。SQLite由以下几个部分组成:SQL编译器、内核、后端以及附件。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),是调试、修改和扩展SQLite的内核变得更加方便。所有SQL语句都被编译成易读的、可以在SQLite虚拟机中执行的程序集。

  SQlite数据库是一个轻量级的关系型数据库,不需要像其它关系型数据库一样需要安装,Android已经将SQLite数据库内置在系统中,内置的版本是3.0版本。SQlite支持标准的SQL语法,还支持ACID(数据库事务)原则,占用资源非常少,非常适合在移动设备中使用。

  袖珍型的SQLite数据库就可以支持高达2TB大小的数据库,每个数据库都是以单个文件的形式存在,这些数据都是以B-Tree的数据结构形式存储在磁盘上。每一个数据库是一个文件,数据库中可以包含多个表,表中可以包含多个字段。

  SQLite数据库支持NULL、INTEGER、REAL、TEXT和BLOB数据类型,分别代表空值、整型值、浮点值、字符串文本、二进制对象。SQLite采用动态数据类型,当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储,SQLite称这为“弱类型”。但有一个特例,如果是INTEGER PRIMARY KEY,则其他类型不会被转换,会报一个“datatype missmatch”的错误。简单的说就是:我们可以各种数据类型的数据保存到任何字段中而不用关心字段声明的数据类型。

下面是Android系统中SQLite数据库的几个关键类:

  • SQLiteOpenHelper:数据库抽象类,我们通过继承该类,获取数据库实例,然后可以重写数据库创建、更新版本方法和关闭数据库

  • SQLiteDatabase:数据库访问类:我们通过获取这个类的实例来对数据库做一些CRUD操作

  • Cursor:游标:类似于JDBC里的结果集

2、SQLiteOpenHelper创建数据库与版本管理

  我们继承SQLiteOpenHelper这个类的时候必须要实现两个方法: onCreate(SQLiteDatabase sqLiteDatabase)和onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1),onCreate方法是我们第一次使用应用的时候生成数据表;onUpgrade方法是数据库版本发生变更的时候调用。还有必须要实现一个构造方法,下面是代码示例:

public class DBOpenHelper extends SQLiteOpenHelper {
private static String DB_NAME = "db_test.db";
private static int DB_VERSION = 1;

public DBOpenHelper(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
}

/**
 * 数据库第一次创建的时候调用
 *
 * @param sqLiteDatabase
 */
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {

}

/**
 * 数据库版本发生改变的时候调用
 *
 * @param sqLiteDatabase
 * @param i
 * @param i1
 */
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

}
}

  上述代码启动会创建一个db_test.db的数据库文件,在data/data/包名/database目录下就可以看到创建的数据库文件,将其导出之后就可以用图形化工具查看。

3、SQLite数据库图形化工具

  SQLite图形化工具很多,推荐使用SQLite expert,这是

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值