ios 关于FMDB的基本使用

Posted old_k

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios 关于FMDB的基本使用相关的知识,希望对你有一定的参考价值。

先简单介绍一下FMDB,FMDB是ios平台的SQLite数据库框架,以OC的方式封装了SQLite的C语言API。使用起来很方便,省去了很多冗余的C语言代码,对比苹果自带的Core Data框架,更加轻量级和灵活,提供了多线程安全的数据库操作方法,有效地防止数据混乱。

-------------------------------------------------------------------------------------------------------------------

github地址

https://github.com/ccgus/fmdb

具体使用:

1.将FMDB导入到你的项目中去,然后添加libsqlite3.tbd(xcode7以后的版本).

2.

#import <Foundation/Foundation.h>

@interface DataBaseManager : NSObject

//写个单例
+(instancetype)sharedFMDataBase;
#import "DataBaseManager.h"
#import "FMDB.h"
@interface DataBaseManager()

@property (nonatomic,strong) FMDatabase * db;

@end

@implementation DataBaseManager

+(instancetype)sharedFMDataBase{
    static DataBaseManager*manager=nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        manager=[[DataBaseManager alloc]init];
    });
    return manager;
}
- (instancetype)init
{
    self = [super init];
    if (self) {
        NSString*doc=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];//得到数据库
        NSString*filename=[doc stringByAppendingPathComponent:@"students.sqlite"];
        //当数据库文件不存在时会自动创建一个数据库文件。
        
        //判断数据库是否存在
        if (!self.db) {
       //不存在创建
        self.db=[FMDatabase databaseWithPath:filename];
        }
        //为数据库设置缓存,提高查询效率
        [self.db setShouldCacheStatements:YES];
        BOOL open=[self.db open];//测试数据库是否打开成功
        if(open){
            NSLog(@"数据库打开成功");
        }else{
            NSLog(@"数据库打开失败");
        }
        //打开数据库
        if ([self.db open]) {
            if (![self.db tableExists:@"t_student"]) {
                
            //创建表
            BOOL result=[self.db executeUpdate:
                         @"CREATE TABLES t_student(id INTEGER PRIMARY KEY AUTOINCREAMENT, name TEXT, age TEXT)"];
            //将字典转成nsdata,而sql中保存是用的blob类型
            if (result) {
                NSLog(@"成功创表");
            }else{
                NSLog(@"创表失败");
            }
            }
            NSLog(@"已经有表了,不需要重新添加");
        }

        //关闭数据库
        [self.db close];
        
    }
    return self;
}

  对数据的基本操作:

//添加数据
[self.db open];
    [self.db executeUpdate:@"INSERT INTO t_student(name,age)values(?,?)",@"xiaoming",@"123"];
    [self.db close];

  

//查询数据 
[self.db open];
    FMResultSet*resultSet=[self.db executeQuery:@"select * from t_student"];
    while ([resultSet next]) {
        int ID = [resultSet intForColumn:@"id"];
        NSString *name = [resultSet stringForColumn:@"name"];
        NSString* age = [resultSet stringForColumn:@"age"];
        NSLog(@"%d %@ %@", ID, name, age);
    }
    [self.db close];

  

  

 

以上是关于ios 关于FMDB的基本使用的主要内容,如果未能解决你的问题,请参考以下文章

FMDB的基本使用

IOS FMDB

FMDB 如何让 sqlite 更简单 iOS?

iOS 数据库第三方FMDB的简单使用

IOS-FMDB

iOS开发--SQLite重要框架FMDB的使用