FMDB简单使用整理
FMDB是什么项目需要数据本地缓存,所以想到了使用本地数据库。iOS的本地数据库就是SQLite,而FMDB就是一个Objective-C编写的SQLite封装库。FMDB的导入及使用1.FMDB地址:Github地址2.使用Cocoapods导入,只需要在Podfile中添加pod 'FMDB',然后pod installFMDatabaseQueue数据库创建:NSString *docPat
·
FMDB是什么
项目需要数据本地缓存,所以想到了使用本地数据库。iOS的本地数据库就是SQLite,而FMDB就是一个Objective-C编写的SQLite封装库。
FMDB的导入及使用
1.FMDB地址:Github地址
2.使用Cocoapods导入,只需要在Podfile中添加pod 'FMDB',然后pod install
FMDatabaseQueue
数据库创建:
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [docPath stringByAppendingPathComponent:[NSString stringWithFormat:@"my.sql"]];
NSLog(@"%@",filePath);
_queueDB = [FMDatabaseQueue databaseQueueWithPath:filePath];
表的创建:
[_queueDB inDatabase:^(FMDatabase * _Nonnull db) {
BOOL result = [db executeUpdate:@"CREATE TABLE IF NOT EXISTS myInfo (myId integer PRIMARY KEY AUTOINCREMENT,myName text NOT NULL)"];
if (result) {
NSLog(@"创建表myInfo成功");
}else{
NSLog(@"创建表myInfo失败");
}
}];
添加数据:
[_queueDB inDatabase:^(FMDatabase * _Nonnull db) {
BOOL result = [db executeUpdate:@"INSERT INTO myInfo (myId,myName) VALUES (?,?)",@1,@"yu"];
if (result) {
NSLog(@"表myInfo添加数据成功");
}else{
NSLog(@"表myInfo添加数据失败");
}
}];
添加数据,如果已经存在就更新
[_queueDB inDatabase:^(FMDatabase * _Nonnull db) {
BOOL result = [db executeUpdate:@"REPLACE INTO myInfo (myId,myName) VALUES (?,?)",@1,@"yu"];
if (result) {
NSLog(@"表myInfo添加数据成功");
}else{
NSLog(@"表myInfo添加数据失败");
}
}];
查询数据:
[_queueDB inDatabase:^(FMDatabase * _Nonnull db) {
FMResultSet *set = [db executeQuery:@"SELECT myName FROM myInfo WHERE myId = ?",@1];
while ([set next]) {
NSString *name = [set intForColumn:@"myName"];
NSLog(@"%@",name);
}
[set close];
}];
事务的使用:
[myDB.queueDB inTransaction:^(FMDatabase * _Nonnull db, BOOL * _Nonnull rollback) {
BOOL result = [db executeUpdate:@"INSERT INTO curveInfo (m yId,myName) VALUES (?,?)",@1,@""];
if (!result) {
*rollback = YES;
return;
}
}];
错误总结
进入下面语句并报错崩溃
else if (args) {
obj = va_arg(args, id);
}
解决 :进行INSERT操作时不能插入简单数据类型(int, long等),必须转化为NSNumber类,如下:
[NSNumber numberWithInt:1]
更多推荐
已为社区贡献1条内容
所有评论(0)