使用FMDB第三方写简单的demo
2014-06-25 08:55
369 查看
首先介绍一下这个第三方的框架
FMDB有三个主要的类
1.FMDatabase – 表示一个单独的SQLite数据库。 用来执行SQLite的命令。2.FMResultSet – 表示FMDatabase执行查询后结果集
3.FMDatabaseQueue – 如果你想在多线程中执行多个查询或更新,你应该使用该类。这是线程安全的。
数据库创建
创建FMDatabase对象时参数为SQLite数据库文件路径。该路径可以是以下三种之一:1..文件路径。该文件路径无需真实存,如果不存在会自动创建。
2..空字符串(@”")。表示会在临时目录创建一个空的数据库,当FMDatabase 链接关闭时,文件也被删除。
3.NULL. 将创建一个内在数据库。同样的,当FMDatabase连接关闭时,数据会被销毁。
如需对临时数据库或内在数据库进行一步了解,请继续阅读:点击打开链接
打开数据库
在和数据库交互 之前,数据库必须是打开的。如果资源或权限不足无法打开或创建数据库,都会导致打开失败。<pre name="code" class="objc"> if (![_db open]) { NSLog(@"数据库打开失败"); return NO; }
执行更新
一切不是SELECT命令的命令都视为更新。这包括 CREATE, UPDATE, INSERT,ALTER,COMMIT, BEGIN, DETACH, DELETE, DROP, END, EXPLAIN, VACUUM, and REPLACE (等)。简单来说,只要不是以SELECT开头的命令都是UPDATE命令。
执行更新返回一个BOOL值。YES表示执行成功,否则表示有那些错误 。你可以调用 -lastErrorMessage 和 -lastErrorCode方法来得到更多信息。
举个例子:插入一个Student数据
// 两种写sql语句方式
NSString *sqlStr = [NSString stringWithFormat:@"insert into student values ('%@', '%@', '%@')", student.number, student.name, student.age]; NSLog(@"%@", sqlStr); BOOL result = [_db executeUpdate:sqlStr];<pre name="code" class="objc" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 25px;">// BOOL result = [_db executeUpdate:@"insert into student (number, name, age) values (?,?,?)", student.number, student.name, student.age];[self judgeDBError:result action:DATABASE_INSERT]; return result;
/** * 打印执行SQL语句的状态 * * @param judge SQL语句的执行:成功(YES)/失败(NO) * @param action SQL语句的相关操作:创建/插入/查询/删除 */ -(void)judgeDBError:(BOOL)judge action:(NSString *)action { if (!judge && [self.db hadError]) { //如果有错误,打印错误信息 NSLog(@"%@失败:%@",action,[self.db lastError]); } else { NSLog(@"%@成功",action); } }
执行查询
SELECT命令就是查询,执行查询的方法是以 -excuteQuery开头的。执行查询时,如果成功返回FMResultSet对象, 错误返回nil. 与执行更新相当,支持使用 NSError**参数。同时,你也可以使用 -lastErrorCode和-lastErrorMessage获知错误信息。
FMResultSet *s = [db executeQuery:@"SELECT * FROM myTable"]; while ([s next]) { //retrieve values for each record }
举个例子:
-(NSMutableArray *)selectAllStudents { FMResultSet *set = [_db executeQuery:@"select * from student"]; return [self selectAllStudentsHelper:set]; }
为了数据查找的通用性,写了一个通用方法查找Student数据
-(NSMutableArray *)selectAllStudentsHelper:(FMResultSet *)FMSet;
-(NSMutableArray *)selectAllStudentsHelper:(FMResultSet *)FMSet { NSMutableArray * selectResult = [NSMutableArray array]; while ([FMSet next]) { Student * stu = [[Student alloc] init]; stu.number = [FMSet stringForColumn:@"number"]; stu.name = [FMSet stringForColumn:@"name"]; stu.age = [FMSet stringForColumn:@"age"]; /** * 各种不同类型的值有不同的取法. * int a = [FMSet intForColumn:@"a"], * NSString * b = [FMSet stringForColumn:@"b"], * NSData * c = [FMSet dateForColumn:@"c"], * float d = [FMSet doubleForColumn:@"d"], */ [selectResult addObject:stu]; } return selectResult; }
FMResultSet 提供了很多方法来获得所需的格式的值:
intForColumn:
longForColumn:
longLongIntForColumn:
boolForColumn:
doubleForColumn:
stringForColumn:
dataForColumn:
dataNoCopyForColumn:
UTF8StringForColumnIndex:
objectForColumn:
简单操作例子下载:点击打开链接
------------------------------------------------------------------------------------------------------------------------------------------------------
事务 线程等操作稍后更新
------------------------------------------------------------------------------------------------------------------------------------------------------
相关文章推荐
- IOS-20-数据库操作之(SQLite第三方封装库FMDB)的基础入门使用及demo源码
- Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
- Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
- 第三方FMDB的简单使用
- Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
- Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
- 使用JQuery实现简单的半透明遮盖层 + 弹出框居中 Demo
- 使用游标循环表的简单DEMO
- Sencha Architect使用treepanel的简单demo
- FileDialog简单使用demo
- java 使用简单的demo实例告诉你优化算法的强大
- 一个简单的demo学习Android远程Service(AIDL的使用)
- WebRTC VoiceEngine使用简单Demo
- sqlite第三方类库:FMDB使用(转载)
- Android 数据库SQLite的使用简单Demo
- iOS关于数据库的操作(使用第三方类库FMDB)
- 一个简单的demo学习Android远程Service(AIDL的使用)
- AngryBird简单开发实现(一),使用JBox2D-2.1.2简单开发的demo
- FileDialog简单使用demo
- 使用pureMVC构建简单的游戏demo