155 lines
5.1 KiB
Objective-C
155 lines
5.1 KiB
Objective-C
//
|
|
// RecommendInfoDAO.m
|
|
// Yoosee
|
|
//
|
|
// Created by gwelltime on 15-1-31.
|
|
// Copyright (c) 2015年 guojunyi. All rights reserved.
|
|
//
|
|
|
|
#import "RecommendInfoDAO.h"
|
|
#import "Constants.h"
|
|
|
|
@implementation RecommendInfoDAO
|
|
|
|
-(id)init{
|
|
if([super init]){
|
|
if([self openDB]){
|
|
char *errMsg;
|
|
|
|
if(sqlite3_exec(self.db, [[self getCreateTableString] UTF8String], NULL, NULL, &errMsg)!=SQLITE_OK){
|
|
NSLog(@"Table RecommendInfo failed to create.");
|
|
sqlite3_free(errMsg);
|
|
}
|
|
[self closeDB];
|
|
}
|
|
}
|
|
return self;
|
|
}
|
|
|
|
-(BOOL)openDB{
|
|
BOOL result = NO;
|
|
|
|
if(sqlite3_open([[self dbPath] UTF8String], &_db)==SQLITE_OK){
|
|
result = YES;
|
|
}else{
|
|
result = NO;
|
|
NSLog(@"Failed to open database");
|
|
}
|
|
|
|
return result;
|
|
};
|
|
|
|
-(NSString*)dbPath{
|
|
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
|
NSString *path = [paths objectAtIndex:0];
|
|
path = [path stringByAppendingPathComponent:DB_NAME];
|
|
return path;
|
|
}
|
|
|
|
-(NSString *)getCreateTableString{
|
|
return @"create table if not exists RecommendInfoTable (ID integer primary key autoincrement,Title text,Date text,ImageURL text,ImageLinkURL text,Content text,IsRead boolean)";
|
|
}
|
|
|
|
-(BOOL)closeDB{
|
|
if(sqlite3_close(self.db)==SQLITE_OK){
|
|
return YES;
|
|
}else{
|
|
return NO;
|
|
}
|
|
}
|
|
|
|
-(BOOL)insert:(RecommendInfo *)model{
|
|
|
|
char *errMsg;
|
|
BOOL result = NO;
|
|
if([self openDB]){
|
|
NSString *SQL = [NSString stringWithFormat:@"insert into RecommendInfoTable(ID,Title,Date,ImageURL,ImageLinkURL,Content,IsRead) VALUES(\"%i\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%i\")",model.messageID,model.titleString,model.timeString,model.imageURLString,model.imageLinkURLString,model.contentString,model.isRead];
|
|
|
|
if(sqlite3_exec(self.db, [SQL UTF8String], NULL, NULL, &errMsg)==SQLITE_OK){
|
|
result = YES;
|
|
}else{
|
|
NSLog(@"Failed to insert RecommendInfo.");
|
|
sqlite3_free(errMsg);
|
|
result = NO;
|
|
}
|
|
|
|
[self closeDB];
|
|
|
|
}
|
|
return result;
|
|
}
|
|
|
|
-(NSArray*)findAll{
|
|
NSMutableArray *array = [NSMutableArray arrayWithCapacity:0];
|
|
|
|
|
|
sqlite3_stmt *statement;
|
|
if([self openDB]){
|
|
NSString *SQL = [NSString stringWithFormat:@"select * from RecommendInfoTable"];
|
|
|
|
if(sqlite3_prepare_v2(self.db, [SQL UTF8String], -1, &statement, NULL)==SQLITE_OK){
|
|
|
|
while(sqlite3_step(statement)==SQLITE_ROW){
|
|
RecommendInfo * m = [[RecommendInfo alloc] init];
|
|
|
|
m.messageID = sqlite3_column_int(statement, 0);
|
|
m.titleString = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 1)];
|
|
m.timeString = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 2)];
|
|
m.imageURLString = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 3)];
|
|
m.imageLinkURLString = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 4)];
|
|
m.contentString = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 5)];
|
|
m.isRead = sqlite3_column_int(statement, 6);
|
|
|
|
|
|
[array addObject:m];
|
|
|
|
}
|
|
}else{
|
|
NSLog(@"Failed to find RecommendInfo:%s",sqlite3_errmsg(self.db));
|
|
}
|
|
|
|
sqlite3_finalize(statement);
|
|
[self closeDB];
|
|
}
|
|
|
|
NSComparator compareByTime = ^(id obj1,id obj2){
|
|
RecommendInfo *recommendInfo1 = (RecommendInfo*)obj1;
|
|
RecommendInfo *recommendInfo2 = (RecommendInfo*)obj2;
|
|
if(recommendInfo1.timeString.intValue>recommendInfo2.timeString.intValue){
|
|
return (NSComparisonResult)NSOrderedAscending;
|
|
}else{
|
|
return (NSComparisonResult)NSOrderedDescending;
|
|
}
|
|
return (NSComparisonResult)NSOrderedSame;
|
|
};
|
|
|
|
return [array sortedArrayUsingComparator:compareByTime];
|
|
}
|
|
|
|
-(BOOL)updateDBWithKey:(int)key modify:(RecommendInfo *)model{
|
|
|
|
sqlite3_stmt *statement;
|
|
BOOL result = YES;
|
|
if([self openDB]){
|
|
NSString *SQL = [NSString stringWithFormat:@"update RecommendInfoTable set Title = \"%@\", Date = \"%@\" , ImageURL = \"%@\" , ImageLinkURL = \"%@\" , Content = \"%@\" , IsRead = \"%i\" where ID = \"%i\"",model.titleString,model.timeString,model.imageURLString,model.imageLinkURLString,model.contentString,model.isRead,key];
|
|
|
|
if(sqlite3_prepare_v2(self.db, [SQL UTF8String], -1, &statement, NULL)!=SQLITE_OK){
|
|
NSLog(@"Failed to update RecommendInfo:%s",sqlite3_errmsg(self.db));
|
|
result = NO;
|
|
}
|
|
|
|
if(sqlite3_step(statement)!=SQLITE_DONE){
|
|
NSLog(@"Failed to update RecommendInfo:%s",sqlite3_errmsg(self.db));
|
|
result = NO;
|
|
}
|
|
|
|
sqlite3_reset(statement);
|
|
sqlite3_finalize(statement);
|
|
[self closeDB];
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
@end
|