FMDB 使用注意整理

说明:针对的FMDB版本为2.5,未作修改。

inDatabase, inTransaction中为dispatch_sync(_queue, ^() { }操作。

_queue = dispatch_queue_create([[NSString stringWithFormat:@"fmdb.%@", self] UTF8String], NULL);

0.要使用事务,需要开启:

[self.dataBaseQueue inDatabase:^(FMDatabase *db) {

tResult = [db executeUpdate:@"PRAGMA foreign_keys = ON"];

if(!tResult) return ;

}];

开启事务实质属于查询操作(待确定),不能在inTransaction:^(){}中使用。

查询操作最好使用inDataBase:^(){},更新等操作使用inTransaction:^(){}。

1.FMDataBase非线程安全,使用FMDataBaseQueue,如:

[self.dataBaseQueue inDatabase:^(FMDatabase *db) {

NSString *tSql = [NSString stringWithFormat:@"SELECT * FROM %@", kDBTableUser];

FMResultSet *tRS = [db executeQuery:tSql];

while ([tRS next]) {

}

}];

2.FMDataBaseQueue使用事务,如:

- (BOOL)addUser:(NSDictionary *)aUser

{

__block BOOL tResult = NO;

[self.dataBaseQueue inTransaction:^(FMDatabase *db, BOOL *rollback) {

NSString *tSql = [NSString stringWithFormat:@"REPLACE INTO %@ VALUES(‘%@‘, ‘%@‘)",kDBTableUser, aUser[@"userID"], aUser[@"userName"]];

tResult = [db executeUpdate:tSql];

if(!tResult)

{

*rollback = YES;

return ;// 退出了这个block

}

}];

return tResult;

}

3. 使用FMDB时,若使用

- (BOOL)executeUpdate:(NSString*)sql withParameterDictionary:(NSDictionary *)arguments

插入修改数据,需要arguments里面的key-value顺序与创建表时顺序一致,否则会出现错误。(还不知道为什么,可能和column index绑定有关)

4.在使用sql语句时,如果使用NSString格式化字符串(stringWithFormat),最好将表名,column名使用单引号圈起来(‘%@‘)。

5.在插入不明字段时,使用

[tValue stringByReplacingOccurrencesOfString:@"‘" withString:@"‘‘"];

对单引号(‘)进行转义。

6.多表查询语句,如:

select * from user

inner join bookmarks on user.userID = bookmarks.userID

inner join history on user.userID = history.userID

where user.userGender=0 and user.userVIP = 1

将从3个表user, bookmarks, history中选取userGender==0&&userVIP ==1的所有数据,并形成一个表,字段为3个表的并集。

欢迎指正。

时间: 2024-10-12 16:07:12

FMDB 使用注意整理的相关文章

整理第三方类库

网络 AFNetworking:mattt大神的网络事件处理框架. XMPPFramework:XMPP,主要用于即时通讯. CocoaAsyncSocket:异步socket请求框架. Reachability:用来检查应用当前的网络连接状况,是苹果Reachability类的直接替代品,支持ARC,支持block,使用GCD方法来通知网络接口的变化. SocketRocket:WebSocket协议是一种网络协议,它的Web设计实现了浏览器与服务器的双向通讯.通过使用WebSockets,你

文顶顶iOS开发博客链接整理及部分项目源代码下载

文顶顶iOS开发博客链接整理及部分项目源代码下载 网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课和跟着文顶顶的博客做项目之后,最快只需要2个月时间,就基本可以独立完成iOS App的开发工作.有经验的开发者也可以在该博客中寻找代码片段进行学习借鉴,必有所收获. 在此也向@文顶顶 表示严重感谢! 由于文顶顶博客博文繁多,每次找文章需要频繁的翻页,

iOS开发资料整理

Please help me contribute to this list, for non-experience iOS developers or someone who need a come-in-handy library list to refer or to use in their projects. Fork, edit and send a PR are all things you can do! Table of Contents UI Component// UI组件

【iOS】小项目框架设计(ReactiveCocoa+MVVM+AFNetworking+FMDB)

网址: http://www.saitjr.com/ios/ios-framework-reactivecocoa-mvvmafnetworking-fmdb.html 上一个项目使用到了ReactiveCocoa+MVVM+AFNetworking+FMDB框架设计,从最初的尝试,到后来不断思考和学习,现在对这样一个整体设计还是有了一定了理解与心得.在此与大家分享下. 本文将不再过多的描述ReactiveCocoa.MVVM.FMDB的使用细节.关于ReactiveCocoa,我有一篇实用案例

iOS每日一记------------之 中级完美大整理

iOS.mac开源项目及库汇总 UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.具体使用看"使用方法". (国人写) XHRefreshControl – XHRefreshControl 是一款高扩展性.低耦合度的下拉刷新.上提加载更

iOS-- (转)学习资料整理 推荐必读!!!

iOS 学习资料整理 2015-01-12 11:31 420人阅读 评论(0) 收藏 举报  分类: 其它(50)  目录(?)[+] 这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的目前所处的位置. 该文档会持续更新, 同时也欢迎更多具有丰富经验的 iOS 开发者将自己的常用的一些工具, 学习资料, 学习心得等分享上来, 我将定期筛选合并,

网络初级整理(一)

网络初级整理 1.KVC & KVO 1).KVC //KVC : 键值编码    Key Value Coding - (id)initWithDictionary:(NSDictionary *)dic{ if (self = [super init]) { //        self.name = dic[@"name"]; //        self.idNum = dic[@"idnum"]; //        self.sex = dic[

【超齐全】iOS 学习资料整理

好赶货,收藏.原文iOS 学习资料整理 这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的目前所处的位置. 该文档会持续更新, 同时也欢迎更多具有丰富经验的 iOS 开发者将自己的常用的一些工具, 学习资料, 学习心得等分享上来, 我将定期筛选合并, 文档尚有一些不完善之处, 也请不吝指出, 感谢您对 iOS 所做的贡献, 让我们一起把国内的 iO

在经历了6个月的学习后,我终于上架了自己的第一款APP---酷课堂iOS群问答精华整理(201807

酷课堂iOS交流群 我们是一个什么样的组织:酷课堂iOS交流群,聚集了一群热爱技术.有趣.有料,平均Q龄在10年以上的"老司机",他们遍布在全国/球各地,有知名企业iOS工程师.高校大学生.自由职业者--如果你也是这样的人,欢迎加入我们,一起畅聊iOS技术及周边. "很干""很佛系"每晚11点后熄灯(禁言),只聊技术,几乎不闲聊. IT从业者自学成功的不少,但从入门到放弃的人更多.一个人走的快,一群人走的远,希望你会是坚持到最后的那一波,希望我们