.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.
@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]