Android+Jquery Mobile学习系列(5)-SQLite数据库
目录导航
SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠。
因为Android已经集成了SQLite,所以开发人员无需引入任何JAR包,而且Android也针对SQLite封装了专属的API,调用起来非常快捷方便。
我也是第一次接触SQLite,感受到它的一些不同之处,作为一门简易实用的数据库,它的学习周期其实蛮短的。对于懂关系型数据库的人来说,使用SQLite应该是得心应手的。
Android支持很多类型的存储方式,比如File文件、sharedPreference和数据库等,因为我做的应用涉及到频繁的更新操作,而且数据组成较为复杂,所以最终选择了SQLite数据库作为应用的存储方式。但是听有经验的开发人员说,在Android上使用数据文件存储极其不好,只要有ROOT权限就可以随意删除文件,所以如果你的应用属于商业性质,我推荐你做一个网络站点将数据存储于网络服务器上最好。
- 特性
不需要配置,不需要安装,也不需要管理员。SQLite不需要安装任何数据库相关的服务器,一个完整的数据库保存在磁盘上面一个文件,要想用数据库工具查看SQLite只需要将它指向那个数据库文件即可!
源代码开放, 代码95%有较好的注释。
完美支持大部分的标准SQL语句。如果你懂得MYSql、Oracle等关系型数据的使用,那么用SQLite也是得心应手。
SQLite最大的特点是,数据表中的字段是无类型的,这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中(除了integer Primary Key)。我的理解是:一张表上的主键必须指定数据类型,而且存储更新时,主键的数据类型一定要对应;而其它的字段全部都是无类型的,你可以存字符串,也可以存int整数。
所以在建表的时候你可以这样写:
CREATE TABLE IF NOT EXISTS user_info (id INTEGER PRIMARY KEY,name,sex)除了主键外,其它字段均不用定义数据类型,即使定义了数据类型,SQLite也会忽略掉。
但是很多人还是建议带上数据类型,一来尽量让建表语句标准化便于迁移,二来让后面维护的开发人员理解每个字段到底是什么类型。
CREATE TABLE IF NOT EXISTS user_info (id INTEGER PRIMARY KEY,name VARCHAR(99),sex INTEGER )
假设主键是自增的,当insert一条数据到数据库中,获取自增主键的值可以这样写:
SELECT last_insert_rowid()