长路漫漫,唯剑作伴--FMDataBase

时间:2022-04-08 05:35:11
#import "TableManager.h"

@interface TableManager ()

@property (nonatomic, copy)NSString *sqlitePath;

@end

@implementation TableManager

+ (TableManager *)defaultManager{
    static TableManager *manager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        manager = [[TableManager alloc] init];
    });
    return manager;
}

- (void)creatTable{
    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"user"];
    NSLog(@"%@",path);
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL tag = [fileManager fileExistsAtPath:path isDirectory:NULL];
    if (!tag) {
        [fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:NULL];
    }
    NSString *tablePath = [path stringByAppendingPathComponent:@"app.sqlite"];
    self.sqlitePath = tablePath;
    FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:tablePath];
    [queue inDatabase:^(FMDatabase *db) {
        BOOL result1 = [db executeUpdate:@"create table if not exists singer (name text,age integer)"];
        if (result1) {
            NSLog(@"创表成功1");
        } else {
            NSLog(@"创表失败1");
        }
    }];
}
/*
 * 增
 */
- (void)add{
    FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:self.sqlitePath];
    [queue inDatabase:^(FMDatabase *db) {
        for (int i = 0; i < 100; i++) {
            NSString *name = [NSString stringWithFormat:@"name%d",i];
            int age = arc4random() % 50 + 20;
            BOOL tag = [db executeUpdate:@"insert into singer (name, age) values (?,?)",name,[NSNumber numberWithInt:age]];
            if (tag) {
                NSLog(@"插入成功");
            }
        }
    }];
}
/*
 * 删
 */
- (void)remove{
    FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:self.sqlitePath];
    [queue inDatabase:^(FMDatabase *db) {
        [db executeUpdate:@"delete from singer where age < 50;"];
    }];
}
/*
 * 查
 */
- (void)query{
    FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:self.sqlitePath];
    [queue inDatabase:^(FMDatabase *db) {
        FMResultSet * set = [db executeQuery:@"select * from singer order by age desc"];
        while (set.next) {
            NSLog(@"%@--%d",[set stringForColumn:@"name"],[set intForColumn:@"age"]);
        }
    }];
}
/*
 * 改
 */
- (void)change{
    FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:self.sqlitePath];
    [queue inDatabase:^(FMDatabase *db) {
        [db executeUpdate:@"UPDATE singer set age = ? where name = ?",[NSNumber numberWithInt:30],@"name3"];
    }];
}
/*
 * 添加字段
 */
- (void)addColom:(NSString *)str{
    FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:self.sqlitePath];
    [queue inDatabase:^(FMDatabase *db) {
        BOOL tag = [db columnExists:str inTableWithName:@"singer"];
        if (tag) {
            NSLog(@"存在");
        } else {
            NSString *sql = [NSString stringWithFormat:@"alter table %@ add column %@",@"singer",str];
            BOOL s = [db executeUpdate:sql];
            if (s) {
                NSLog(@"成功");
            }
        }
    }];
}
@end