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)"];
            
            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];

 

//查询某条数据
NSString*string=[NSString stringWithFormat:@"select age from t_students where id=%d",4];
    
    NSString*str=[self.db stringForQuery:string];

  

 

  

原文地址:https://www.cnblogs.com/oldk/p/5287091.html