DataBaseTool

.h

typedef NS_ENUM(NSUInteger, SelectInDB) {
    SelectInTable,
    SelectNotInTable,
    SelectError,
};

@interface DataBaseTool : NSObject
{
    sqlite3 *dbPoint;
}

+ (instancetype)shareDataBase;

// 判断当前数据,是否在数据库的表里
- (SelectInDB) isExistInTable:(NSString *)movieId;

- (BOOL) insertIntoTable: (MovieDetail *)movieDetail;

- (BOOL) deleteFromTable: (NSString *)movieId;

@end

.m

@implementation DataBaseTool

- (BOOL) deleteFromTable: (NSString *)movieId {
    NSString *sqlStr = [NSString stringWithFormat:@"delete from movie where movieid = '%@'", movieId];
    int result = sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
    if (result == SQLITE_OK) {
        NSLog(@"删除成功");
        return YES;
    } else {
        NSLog(@"删除失败%d", result);
        return NO;
    }
}

- (BOOL) insertIntoTable: (MovieDetail *)movieDetail {
    NSString *sqlStr = [NSString stringWithFormat:@"insert into movie(movieid, title, genres, actors, plot_simple) values('%@','%@','%@','%@','%@')", movieDetail.movieid, movieDetail.title, movieDetail.genres, movieDetail.actors, movieDetail.plot_simple];
    NSLog(@"%@", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES) lastObject]);
    int result = sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
    if (result == SQLITE_OK) {
        NSLog(@"插入成功");
        return YES;
    } else {
        NSLog(@"插入失败%d", result);
        return NO;
    }
}

- (SelectInDB) isExistInTable:(NSString *)movieId {
    NSString *sqlStr = [NSString stringWithFormat:@"select * from movie where movieid = '%@'", movieId];
    sqlite3_stmt *stmt = nil;
    int result = sqlite3_prepare_v2(dbPoint, [sqlStr UTF8String], -1, &stmt, nil);
    if (result == SQLITE_OK) {
        NSLog(@"查询成功");
        if (sqlite3_step(stmt) == SQLITE_ROW) {
            sqlite3_finalize(stmt);
            return SelectInTable;
        } else {
            sqlite3_finalize(stmt);
            return SelectNotInTable;
        }
    } else {
        sqlite3_finalize(stmt);
        NSLog(@"查询失败%d", result);
        return SelectError;
    }
}

+ (instancetype)shareDataBase {
    static DataBaseTool *tool;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        tool = [[DataBaseTool alloc] init];
        [tool openDataBase];
        [tool createTable];
    });
    return tool;
}

- (void) openDataBase {
    NSString *sandBox = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES) lastObject];
    NSString *docPath = [sandBox stringByAppendingPathComponent:@"DouBan.sqlite"];
    int result = sqlite3_open([docPath UTF8String], &dbPoint);
    if (result == SQLITE_OK) {
        NSLog(@"成功打开数据库");
    } else {
        NSLog(@"打开数据库失败%d", result);
    }
}

- (void) createTable {
    NSString *sqlStr = @"create table if not exists movie(movieid text primary key, title text, genres text, actors text, plot_simple text)";
    int result = sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
    if (result == SQLITE_OK) {
        NSLog(@"建表成功");
    } else {
        NSLog(@"建表不成功%d", result);
    }
}
@end

eg.

// MovieDetail的属性
@interface MovieDetail : NSObject
@property (nonatomic, copy) NSString *movieid;
@property (nonatomic, copy) NSString *genres;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *actors;
@property (nonatomic, copy) NSString *plot_simple;
@end
self.isSave = [[DataBaseTool shareDataBase] isExistInTable:self.movieDetail.movieid];

[[DataBaseTool shareDataBase] insertIntoTable:self.movieDetail];

[[DataBaseTool shareDataBase] deleteFromTable: self.movieId];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值