Android Sqlite(一)

SQLite 概述

与PC比较,移动平台在可用内存和处理器计算能力方面仍有不足,SQLite作为一个轻量级的数据库,由于自身体积小巧,占用内存少等原因成为了诸多移动系统支持的主要数据库,Android,iOS,Blackberry都对SQLite有很好的支持。

  • 易于使用
  • 内存占用低
  • 可以免费使用

无疑是SQLite成为移动平台首选的主要原因。作为数据库Library,SQLite的大小不到500K,核心功能库不到300K,运行时需要的最小栈空间仅为4K,要求堆空间也只有100K。这些无疑对嵌入式系统充满了诱惑,可以说是手机、PDA和MP3等类似设备的首选。虽然SQLite是可以免费使用,但是代码的质量没有因此而受影响,每一个SQLite发布版本都通过了很严格的测试,在SQLite的官网上我们可以看到下面这段话,让人对这个开源团队肃然起敬:

We the developers hope that you find SQLite useful and we charge you to use it well: to make good and beautiful products that are fast, reliable, and simple to use. Seek forgiveness for yourself as you forgive others. And just as you have received SQLite for free, so also freely give, paying the debt forward.

SQLite的特性

与传统的数据库系统相比,SQLite有很多能够吸引嵌入式设备的特性,

  • 不像多数的PC数据库系统,SQLite没有Server的概念
  • SQLite将所有的数据保存在同一个文件当中
  • 相对于大型数据库,SQLite只支持部分的数据类型
  • SQLite中对于字段的长度没有限制
  • SQLite是跨平台的(64位与32位,大端与小端系统)

    SQLite没有Server的概念

    与其说SQLite是数据库系统,不如说SQLite是用于操作磁盘文件的库文件,我们在使用中不需要对数据库进行配置,没有用户权限以及访问权限等限制,因此SQLite的使用更类似于fwrite()操作,无须JDBC等支持。

SQLite的数据类型

下表中列出来SQLite支持的数据类型:

在支持的类型中缺少常用的DATETIME与Boolean, boolean我们可以使用INTEGER来代替,在接下来的代码中,我会示意如果模拟DATETIME类型。

SQLite对字段长度没有限制

不想SQL Server等数据库,支持VARCHAR等类型,限制了表中某列字段的长度,SQLite中所有的String都是TEXT类型,而该类型并没有字符串长度的限制,因此我们在使用时需要在代码中管理对字段长度的限制。

Android中的SQLite

Android默认支持SQLite,在android.database.sqlit包中包含了所有的与SQLite相关的类。SQLite的数据库文件保存在/data/data/{package-name}/databases目录下。

下一次需要拿个例子来练练手了 :)