很早之前就接触Sqlite数据库,但是之前对数据库操作未使用任何第三方库,只是实现基本的增、删、改、查功能,自己对着一本iPhone开发入门级的书籍写了一个类,基本能实现上述四个功能。最近在开发一个软件,由于是一个本地应用,经过再三思量,最好决定使用sqlite数据库存储数据。但是此次数据有点复杂,以前写的对数据库操作的类已经完全不能满足本次开发的需求,故上网找了下FMDB这个第三方库,该库把对数据库操作全部封装,使我们对于复杂的API视而不见,只需要调用接口,而且FMDB支持数据库事务处理以及支持ARC和非ARC,故好好研究了下FMDB的用法。
FMDatabase *fmDatabase = [FMDatabase databaseWithPath:dbPath]; //dbPath 为数据库路径,如果该路径不存在该数据库,则会自动创建一个数据库
对数据库操作,首先要打开数据库 [fmDatabase open] ,这里要提醒的是,频繁打开、关闭数据库很耗时。
[fmDatabase tableExists:tableName]; //tableName 表格名 判断数据库中是否存在该表
1. 创建表
CREATE TABLE project (projectName text,prototypeCount integer,iconData Binary,projectId integer) //创建project表SQL 语句
[fmDatabase executeUpdate:SQL] //SQL sql语句, 创建表格,FMDB中执行SQL语句,除了执行查询语句用executeQuery外,其它都用 executeUpdate
2. 向表格插入数据
[fmDatabase executeUpdate:@"INSERT INTO project (projectName, prototypeCount, iconData, projectId) VALUES (?,?,?,?)",project.projectName,[NSNumbernumberWithInteger:project.prototypeCount],project.iconData,[NSNumbernumberWithInteger:project.projectId]];
//注意,此处变量都为对象,起初传入int类型,直接crash
3. 查询数据
[fmDatabase executeQuery:@"SELECT * FROM project"]