实用工具iOS奇思怪巧键盘上的鼓手

[iOS]数据库第三方框架FMDB详细讲解

2015-09-28  本文已影响47042人  陈向阳哈

[iOS]数据库第三方框架FMDB详细讲解


初识FMDB


iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦。于是,就出现了一系列将SQLite API进行封装的库,例如FMDBPlausibleDatabasesqlitepersistentobjects等。

FMDB是一款简洁、易用的封装库。因此,在这里推荐使用第三方框架FMDB,它是对libsqlite3框架的封装,用起来的步骤与SQLite使用类似,并且它对于多线程的并发操作进行了处理,所以是线程安全的。


FMDB PK Sqlite



FMDB框架中重要的框架类



FMDB使用步骤


step.png
数据库创建

创建FMDatabase对象时参数为SQLite数据库文件路径,该路径可以是以下三种方式之一

student.png
数据库使用FMDB框架代码操作
sql.png
使用FMDataBase类执行数据库命令SQL

一切不是SELECT命令的命令都视为更新。这包括 CREAT,UPDATE,INSERT,ALTER,BEGIN,COMMIT,DETACH,DELETE,DROP,END,EXPLAIN,VACUUM,REPLACE等。

简单来说,只要不是以SELECT开头的命令都是更新命令。

执行更新返回一个BOOL值。YES表示 执行成功,否则表示有错误。你可以调用 -lastErrorMessage 和 -lastErrorCode方法来得到更多信息。


在多个线程中同时使用一个FMDatabase实例是不明智的。现在你可以为每 个线程创建一个FMDatabase对象,不要让多个线程分享同一个实例,他无 法在多个线程中同事使用。否则程序会时不时崩溃或者报告异常。所以,不要 初始化FMDatabase对象,然后在多个线程中使用。这时候,我们就需要使 用FMDatabaseQueue来创建队列执行事务。

 //1.创建队列
 FMDatabaseQueue *queue = [FMDatabaseQueue   
 databaseQueueWithPath:aPath];
  __block BOOL whoopsSomethingWrongHappened = true;
  
 //2.把任务包装到事务里
 [queue inTransaction:^(FMDatabase *db, BOOL *rollback) 
  {  
 whoopsSomethingWrongHappened &=  [db     executeUpdate:@“INSERT INTO myTable VALUES (?)”,    [NSNumber numberWith:1]];
whoopsSomethingWrongHappened &= [db
executeUpdata:@“INSERT INTO myTable VALUES (?)”, 
[NSNumber numberWithInt:2]];

whoopsSomethingWrongHappened &= [db  
executeUpdata:@“INSERT INTO myTable VALUES (?)”[NSNumber  
numberWithInt:3]];
//如果有错误 返回
if (!whoopsSomethingWrongHappened)
  { 
    *rollback = YES;
      return;
  }
}];

好了,到此为止,相信你已经能够使用FMDB进行数据持久化了,它的好与坏 只有在不断地使用过程中才能发现了解。所以,希望大家学会了以后还是要多  写多练多使用。另外,诚心希望大家多提宝贵意见,或者沟通一些好的想法。^^
上一篇下一篇

猜你喜欢

热点阅读