第三方库 FMDB的使用


 fmdb是轻量级的数据库。在ios中使用十分常见,总结一下fmdb的使用

首先  我用cocoapods 在GitHub上download下来

pod 'FMDB', '~> 2.5'

当然也可以将他下载下来 copy进工程  但是此处必须要导入他所需要的类库libsqlite3.0.dylib

让我们新建一个类  继承于NSObject

这个类  就是我们通常所说的单例 引入头文件 #import "FMDB.h" (此处操作在.h 中声明)

+ (FMDatabase *)shareDataBase;

在.m 中实现

//此处有俩种初始化方法,一种是通常的初始化  ,另一种是多线程初始化

// 单例初始化
+ (FMDatabase *)shareDataBase
{
    static FMDatabase *db = nil;
    
    if (db == nil) {
        
        NSString *fullPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/contacts.sqlite"];
        
        db = [[FMDatabase alloc]initWithPath:fullPath];
        
        NSLog(@"fullPath-->%@", fullPath);
    }
    
    return db;
}

//使用GCD初始化
+ (FMDatabase *)shareDataBase
{
    static dispatch_once_t predicate;
   
    static FMDatabase *db = nil;
  
    dispatch_once(&predicate, ^{

    NSString *fullPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/contacts.sqlite"];
        
        db = [[FMDatabase alloc]initWithPath:fullPath];


    });
   
    return db;
}

到此  单例已经完毕


接下来  我们使用他来  做一些事情 

假如  我们要在数据库中存入姓名和 学号

//首先  我们先建立一个存放姓名和学号的数组
+ (NSMutableArray *)queryData;

//我们在数据库里面  增加表
+ (BOOL)insertData:(Contact *)contact;

//我们删除表
+ (BOOL)deleteData:(int)contactID;

//我们修改表
+ (BOOL)updateData:(Contact *)contact;


同样 我们在.m实现这些方法

/*
 * 建立存放数据的数组  返回 数组
*/
+ (NSMutableArray *)queryData
{
    NSMutableArray *array = [[NSMutableArray alloc]init];
    
    FMDatabase *db = [DatabaseUtil shareDataBase];
    
    if (![db open]) {
        
        [db close];
        return nil;
    }
    [db setShouldCacheStatements:YES];
    
    FMResultSet *rs = [db executeQuery:@"SELECT * FROM contacts"];
    while ([rs next]) {
        
        Contact *contact = [[Contact alloc]init];
        contact.contactID = [rs intForColumn:@"contact_id"];
        contact.name = [rs stringForColumn:@"contact_name"];
        contact.number = [rs stringForColumn:@"contact_number"];
        [array addObject:contact];
    }
    [rs close];
    
    [db close];
    
    return array;

}

/*
 * 增加表 判断结果  返回结果
 */
+ (BOOL)insertData:(Contact *)contact
{
    BOOL result = NO;
    
    FMDatabase *db = [DatabaseUtil shareDataBase];
    
    if (![db open]) {
        
        [db close];
        
        return NO;
    }
    
    [db setShouldCacheStatements:YES];
    
    if ([db tableExists:@"contacts"]) {
        result = YES;
    }else{
        if ([db executeUpdate:@"CREATE TABLE contacts(contact_id INTEGER PRIMARY KEY, contact_name TEXT, contact_number TEXT NOT NULL)"]) {
            
            result = YES;
        }
    }
    
    if ([db executeUpdate:@"INSERT INTO contacts(contact_name,contact_number) VALUES (?,?)",contact.name,contact.number]) {
        
        result = YES;
    }
    [db close];
    
    return result;
    
}



/*
 * 删除表  判断结果  返回结果
 */
+ (BOOL)deleteData:(int)contactID
{
    BOOL result = NO;
    
    FMDatabase *db = [DatabaseUtil shareDataBase];
    
    if (![db open]) {
        
        [db close];
        return NO;
    }
    
    [db setShouldCacheStatements:YES];
    
    if ([db executeUpdate:@"DELETE FROM contacts WHERE contacts.contact_id = (?)", @(contactID)]) {
        
        return YES;
    }
    
    [db close];
    
    
    return result;
}
/*
 * 修改表  判断结果  返回结果
 */
+ (BOOL)updateData:(Contact *)contact
{
    BOOL result = NO;
    
    FMDatabase *db = [DatabaseUtil shareDataBase];
    
    if (![db open]) {
        
        [db close];
        return NO;
    }
    [db setShouldCacheStatements:YES];
    
    if ([db executeUpdate:@"UPDATE contacts SET contact_name = (?),contact_number = (?) WHERE contact_id = (?)",contact.name,contact.number,@(contact.contactID)]) {
        
        NSLog(@"%d-%@-%@",contact.contactID,contact.name,contact.number);
        
        result = YES;
    }
    
    [db close];
    return result;

}


到此  我们一个轻量级的数据库  就建立完成了 只需要使用的时候调用他就可以!!!


以上  就是 个人  对FMDB的小小封装  具体哪里有什么问题  希望各位可以指出  O(∩_∩)O谢谢!!!









 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值